{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2 网格搜索\n",
    "### 5.2.1 简单网格搜索\n",
    "<p>以核SVM为（RBF径向基函数）例，他有2个重要参数:核宽度(gamma)与正则化参数(C).使用网格搜索的方式为寻找合适的参数而探索</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Size of training set:112 Size of Testing set 38\n",
      "Best Score:0.9736842105263158\n",
      "Best paramaters:{'C': 100, 'gamma': 0.001}\n"
     ]
    }
   ],
   "source": [
    "# 简单的网格搜索实现\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.datasets import load_iris\n",
    "from sklearn.model_selection import train_test_split\n",
    "iris = load_iris()\n",
    "X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=0)\n",
    "print(\"Size of training set:{} Size of Testing set {}\".format(X_train.shape[0],X_test.shape[0]))\n",
    "best_score = 0\n",
    "\n",
    "for gamma in [0.001,0.01,0.1,1,10,100]:\n",
    "    for C in [0.001,0.01,0.1,1,10,100]:\n",
    "        # 对每种参数组合都训练一个SVC\n",
    "        svm = SVC(gamma=gamma,C=C)\n",
    "        svm.fit(X_train,y_train)\n",
    "        # 在测试集上评估SVC\n",
    "        score = svm.score(X_test,y_test)\n",
    "        # 如果我们得到了更高的分数,则保存该分数和对应的系数\n",
    "        if score > best_score:\n",
    "            best_score = score\n",
    "            best_paramaters = {'C':C,'gamma':gamma}\n",
    "\n",
    "print(\"Best Score:{}\".format(best_score))\n",
    "print(\"Best paramaters:{}\".format(best_paramaters))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2.2参数过拟合的风险\n",
    "<p>上述简单网格搜索中,我们的最佳精度是0.97，但我们不能就此下结论:我们找到了一个精度0.97的模型。因为这个精度不一定能推广到新数据上，即有过拟合的风险。因此，为了降低过拟合，我们需要一个独立的数据集，来对模型做最终的评估。所以我们要把数据集分割为3部分，①训练集，②验证集，③测试集.其中，训练集负责构建模型。验证集负责测量每个模型的精度，测试集负责评估最终模型的精度</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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l44EU1WrKOzbt2/fvn379alSw99+Z31jzODTdjBVtYrCvn379u3bt987VWn42++8b4wZfNoKpqpWUdi3b9++ffv2+6YqDX/7nfeNMYNPy8FU1SoK+/bt27dv3377VDVQsN+/b4wZfFoKpqpWUdi3b9++ffv226fKgYL99n1jTOdpOpiqWkVh3759+/bt22+fqjX87XfWN8YMDE0HU1WqKOzbt2/fvn379f1mqFrD335nfWPMwNF0MFWlisK+ffv27du3X99vlKo1/O131jfGDCxNB1NVqijs27dv3759+/X9Rqhaw99+Z31jzMDTdDDVH1WuWOzbt2/fvn37iao1/O131jfGDA4dDaaqVlHYt2/fvn379ntStYa//c76xpjBo2PBVNUqCvv27du3b99+T6rW8LffWd8YM7h0JJiqWkVh3759+/bt269PlRr+9jvrG2MGn7aDqapVFPbt27dv37793qlKw99+531jzODTVjBVtYrCvn379u3bt983VWn42++8b4wZfFoOpqpWUdi3b9++ffv226eqgYL9/n1jzODTUjBVtYrCvn379u3bt98+VQ4U7LfvG2M6T9PBVNUqCvv27du3b99++1St4W+/s74xZmBoOpiqUkVh3759+/bt26/vN0PVGv72O+sbYwaOpoOpKlUU9u3bt2/fvv36fqNUreFvv7O+MWZgaTqYqlJFYd++ffv27duv7zdC1Rr+9jvrG2MGnqaDqf6ocsVi3759+/bt209UreFvv7O+MWZw6GgwVbWKwr59+/bt27ffk6o1/O131jfGDB4dC6aqVlHYt2/fvn379ntStYa//c76xpjBpSPBVNUqCvv27du3b99+farU8LffWd8YM/i0HUxVraKwb9++ffv27fdOVRr+9jvvG2MGn7aCqapVFPbt27dv3779vqlKw99+531jzODTcjBVtYrCvn379u3bt98+VQ0U7PfvG2MGn5aCqapVFPbt27dv37799qlyoGC/fd8Y03maDqaqVlHYt2/fvn379tunag1/+531jTEDQ9PBVJUqCvv27du3b99+fb8Zqtbwt99Z3xgzcDQdTFWporBv3759+/bt1/cbpWoNf/ud9Y0xA0vTwVSVKgr79u3bt2/ffn2/EarW8LffWd8YM/A0HUz1R5UrFvv27du3b99+omoNf/ud9Y0xg0NHg6mqVRT27du3b9++/Z5UreFvv7O+MWbw6FgwVbWKwr59+/bt27ffk6o1/O131jfGDC4dCaaqVlHYt2/fvn379utTpYa//c76xpjBRxHRsLz++uvPWbp06ZYDmB9jjDHGdIARI0bMXbJkyVbFbV1dXc8uX7585FDlyQwsw4YNe667u3tU7f/Dhw+f093d7XabMf3Q1dU1d9myZVv1b/akqWDKGGOMMcYYY0yiozegMMYYY4wxxpi1BQdTxhhjjDHGGNMCDqaMMcYYY4wxpgUcTBljjDHGGGNMCziYMsYYY4wxxpgWcDBljDHGGGOMMS3gYMqYlxGSuiWNb9AdL6m7H+doSXMlvSBpnKTrJB3VQr6OlXR1s58zxpihRNI0SccPYPouG19mSApJ7xzgYzwg6VMDeQzTOA6mjBlEcsUckj5Z2v7WvH3WEGWtB5K2BU4B3hMRG0bEHyLiAxFxesHpUWnUa3xExCkRsd/g5NyYtYt8zb2UOz0WSPqjpI8Pdb6aQdJkSTcMdT4GEpeN1aF0zRRfbxzqvBWRNCbXs9sWt0fELhFx6VDly6yOgyljBp+HgC+Utn0hb68SY4AVEfHgUGfEGNMvJ0fEhsAo4GLgUkmvbTYRScM7nrNBYk3OuxkSTs4dhcXXn4c6U2bNw8GUMYPPFcBuknYAkLQR8HHgvKIkaQNJZ0t6QtIzkn4pabvC/o0knS/pOUmzJU0qH0jSRyTdLWm+pIckfaaRDObpA78FhuXeuhl5+8qeVUn3Zf032TlH0g+AvYAT8rZHsrtar7OkWXl6y43Zu1/SnoX9wyWdKelpSXMkHSXpMUmHNpJ/Y9ZWIqIb+BEwDHijpL0l3SHpeUnzJF0iaXTNz9f0Wbl8WQgcKWlbSb/O/gJJN0vavfCZyfnaPS07z0o6QtL2km6StCiXOzsVPtOVr/m/5PLollqaubw5FhhfGCGolY97SZqey7kZko6UpLxvvNLU5oMlPQ48V+87kXRALv8WKU1bnlLYN0rST3M5O0/SzyVt2dv3K2k7SZdJeiq/fpLL8Nr+LXJ6f5W0MH8Pr2uibBwl6b9z2nNyGT+ysL/PstO0h6QJud4ZXti2Yf6u35X/f4qkx2t1o6Sv9ZHeoZIeK22bIumcwv/Py+ffIkkPSvp0Qa/Vs4/k452QPzNL0kGFNN6dr/MFkh6W9KXCvtp18qmc3wX5PN8I0xEcTBkz+CwFLgT+Jf//QOD3wFMl70zgbfm1PfAMcLWkYXn/WcBrgJ2BXYH9SQ0oACS9D/gp8DVgJDAJ+EGtQuiLPH3gA8Dy3Fu3Yx3nTfmf+2Tn8xFxOHAzq3r8XtfHYT4HfBXYhBS4nV/Yd0w+/tuAscC2+TswxvSBpHWBw4BlpIbYS8DhwBbAG4FtgLNLH/sc8D3Stfg9UtvgR6RrbivgHuAKrT7y8y7g0bz/IOC7pPLmMFJ581DpOCeRyqj3k0bPzgWul7RZLm9OAaYVRggel7QLcG1OewvgQ/lvObiQ7jBSWbEb0CMIkrQBcAFwWERsBOyQ80kOyn4JBPCG/PcuAi7q5bsdAdwEPJjT2ZlUNp2d968DXAlsCozL758FFjVRNl4IbJbT3gnYPOe/SF9lp2mP64Bu0rlWYyIwh/T7Qfr93wlsRJpVcqqkfds45nTgzaTz5SRgiqSd875aPfu6fN6cXP6wpLHAr4H/R7q2Ds15mljQhgH75PReS7pevtpGnk0BB1PGDA3/BXxWUhfwxfz/leRK+RDg+Ij4W0S8SAqKdgLekvd/BjghIuZExALgm6Vj/DtwdkTcHBErIuJO4Gc53Srw44h4ICKWA+cAr5a0Sd53CHB6RDweEUtIf9uKocqoMWsAx0maDzxJClo+HhGPRcT0vN6xOyLmAKcDe5c+e1lE3BSJxRHx14i4Kv97CXA8sB2p86bGXyLinIhYHhHXAc8C10fEQxGxjBSQjIOVQctXgG/ka3p5RPyU1IFUbLSW+VdgakRcmT/zMPADepZhR0fEgohY3Es6y4DXSxoZES9GRK1RvHt+HVb4/FHAP6u0RiUzAVBEfCsilkTE88AJwGdyJ9ce+W/+XETMzeXunyLi7338jSuRtA2wL3BERDyf0z8C+KCkrQtqX2WnaZzj8ijpylf+Ti8gBcE1PgucFxEBEBE/i4i/5+vlJuAael5TDRMRP42IZ/M5fgnwJ2B8E0kcCNwTEefl6/x24MfA50ve0RHxQkTMJXUi7NFqns3qOJgyZgiIiPuB2aSKeEtSr1KRLYARwOOFz7wAPA28Ku9fD5hV+MzMUhpjgW8WKwpSj9U2HftD2qM4Evdifq9NO3gl6fsBIDfo5g1SvoxZE/lORGwaEaMjYs+IuBpA0u6Srs9TxhaS1lNtUfrsrOJ/JG2ep5r9NX/mibyr+LnySPri0rbFrLqeNwc2JI2sF8ujHUgjO70xFjiw9JkTgWJgsaKQvx7kAOmDpBGxGXnaXW0a1VhSOTq3kP4M0uyB7eokNxbYrpSfG0kjW1uR1pk+nTu3WuFV+b1Yls8o7YO+y07TOLVrZuUrbz8P+ICk0ZJ2BPakMPon6auS/qw0dXY+sB89r6mGkLSOpJMkPZKn380njR41k96rKLQVMjNY/ZxZHhHFOvRFfM50jK6hzoAxazE/IU03OSkilqfO25XMI03PGUuuTCVtCIwmNRzmAf8gVd61ynZsKf3ZwJSI+O4A5R9SI6JMJ0aQ/kZhWp+k9WmxsjJmLecS4DJgYkQslDQBKN+Ku3zNnkoKWN4aEU/ltRULAdEaz5Aab++NiD/04tQrN2YD50bEYX2kHbURgz6EacC0PHr0YeBySXfk9F8ERkZEI+XWbNKI3C71dirdjXW0pI0jYmEdpb9j1ILCMUBtnc0OpX1mgImIhyXdTZq+uhlwQ0Q8CSDpHcBppJGoO3LdfRm9XxsvAK8obdsG+Gv+94GkEaR9gAcjYoWkuwrpNXJePkHqMCiyAz5nBg2PTBkzdFxMKkDL6xfIFft/AydL2ibP+z8DeBi4M++/CPi2pC0lbUxqABU5C/ia0gLuYZLWzb3UnRzan8PqU39q217dZroXAN+QNDavUzgVl1fGtMLGwAJgkdINbI5u8DOLgedzJ85p7WQgBztnA/8p6TWwclH/vnlqG6RyY7u85qvGj4ADJO2ndFOaLkk7S3p3o8fO5ePHJW2Sp3DNz7uWA3cB9wJnSxqV/S0kHdBLcr8ChivdAGIjJV4p6aN5/13A3cA5eVRjHUlvLEzR67NszNMBfwOcIWlTSZuRyv3rIqI8EmgGlvNIa9MOIa3vq7Ex6dyZB4SkD5HW7PXGH0kB9oR8PnyUtN6wmF53Tm8dSZ9j1Top8vYV9Kxni1wM7C7pkHyNvAX4EnltoBl43DgxZoiIiKURcUOeF1+Pr5Mq5z+QerG2Bj6cGwSQ1kTNJAVYfyb1Ntf2ERG/Ia3H+i6pZ/gp0k0tNuzgn3EccFKe7vDjvO1MYI88DeaBFtM9lbSw+k7SFKSngL+TRuuMMY3zRVLP9yLSnUSnNvCZE0mj4M+S1m/cSqFsaZETSTdnuDJPHXwU+DKr2iFTST3pc3LZMTZPh55AWi/6FGma8xSaG6Veh3RTjFmSFgE/BCZFxKzcKfWR7Nyd999BL+tV8pTBvUk3h3iYFKTeSLp5QK0T7MPAElKQNp/UKK9Np2qkbDyI9Fs9nF/zqc4615cbtTsrFl8T8r5LSKM7G5LO2xrXkzr77iTVq58AftHbASJiBqmu/gnpbpPvBy4vKOeTzrnHSDMydmbVjS5qU9xPAC7O581xdY4xkzQydTjpmr0A+FZE/LzRL8K0h/oZHTfGmCEn944/D7w7Im4d6vwYY4wxxoBHpowxFUTSZpLen6f21G7XPJs0SmeMMcYYUwkcTBljqsgw4D9I0yJmku74tV++5bIxxhhjTCXwNIgA8ZsAAABTSURBVD9jjDHGGGOMaQGPTBljjDHGGGNMCziYMsYYY4wxxpgWcDBljDHGGGOMMS3gYMoYY4wxxhhjWsDBlDHGGGOMMca0gIMpY4wxxhhjjGmB/wHA9r6wSdjMzwAAAABJRU5ErkJggg==\n",
      "text/plain": [
       "<Figure size 1080x72 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 训练集，验证集，测试集，如下图所示\n",
    "import mglearn\n",
    "mglearn.plots.plot_threefold_split()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Size of training set:84 size of validation:28 size of test set38\n",
      "验证集上的最佳分数:0.9736842105263158\n",
      "最佳参数:{'C': 10, 'gamma': 0.1}\n",
      "测试集最佳分数0.9736842105263158\n"
     ]
    }
   ],
   "source": [
    "from sklearn.svm import SVC\n",
    "# 将数据划分为训练+验证集与测试集\n",
    "X_trainval,X_test,y_trainval,y_test = train_test_split(iris.data,iris.target,random_state=0)\n",
    "# 将训练集+验证集划分为训练集与验证集\n",
    "X_train,X_valid,y_train,y_valid = train_test_split(X_trainval,y_trainval,random_state=1)\n",
    "print(\"Size of training set:{} size of validation:{} size of test set{}\".format(X_train.shape[0],X_valid.shape[0],X_test.shape[0]))\n",
    "\n",
    "bset_score=0\n",
    "#best_parameters = {\"gamma\":0.001,'C':0.001}\n",
    "\n",
    "for gamma in [0.001,0.01,0.1,1,10,100]:\n",
    "    for C in [0.001,0.01,0.1,1,10,100]:\n",
    "        # 对每种参数组合都训练一个SVC\n",
    "        svm = SVC(gamma=gamma,C=C)\n",
    "        svm.fit(X_train,y_train)\n",
    "        # 在验证集上评估模型精度\n",
    "        score=svm.score(X_valid,y_valid)\n",
    "        # 如果我们得到更高的分数，则保留该分数与对应的参数\n",
    "        if score > best_score:\n",
    "            best_score=score\n",
    "            best_parameters = {'C':C,\"gamma\":gamma}\n",
    "            \n",
    "# 在训练集+验证集上重新构建一个模型\n",
    "svm = SVC(**best_parameters)\n",
    "#svm = SVC(C=100,gamma=0.001)\n",
    "svm.fit(X_trainval,y_trainval)\n",
    "#print(f\"score:{svm.fit(X_train,y_train).score(X_valid,y_valid)}\")\n",
    "test_score = svm.score(X_test,y_test)\n",
    "print(\"验证集上的最佳分数:{}\".format(best_score))\n",
    "print(\"最佳参数:{}\".format(best_parameters))\n",
    "print(\"测试集最佳分数{}\".format(test_score))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 5.2.3 带交叉验证的网格搜索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 41,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "验证集上的最佳分数:0.9731225296442687\n",
      "最终评估:0.974\n",
      "最佳参数:{'C': 10, 'gamma': 0.1}\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.model_selection import cross_val_score\n",
    "best_score=0\n",
    "best_parameters = {'C':0.001,'gamma':0.001}\n",
    "for gamma in [0.001,0.01,0.1,1,10,100]:\n",
    "    for C in [0.001,0.01,0.1,1,10,100]:\n",
    "        # 对于每种参数组合都训练一个SVC\n",
    "        svm = SVC(gamma=gamma,C=C)\n",
    "        # 执行交叉验证\n",
    "        scores = cross_val_score(svm,X_trainval,y_trainval,cv=5)\n",
    "        # 计算交叉验证平均精度\n",
    "        score = np.mean(scores)\n",
    "        # 如果得到更高的分数\n",
    "        if score > best_score:\n",
    "            best_score=score\n",
    "            best_parameters = {'C':C,'gamma':gamma}\n",
    "# 在训练集上重构一个模型\n",
    "print(\"验证集上的最佳分数:{}\".format(best_score))\n",
    "svm = SVC(**best_parameters)\n",
    "svm.fit(X_trainval,y_trainval)\n",
    "print(\"最终评估:{:.3f}\".format(svm.score(X_test,y_test)))\n",
    "print(\"最佳参数:{}\".format(best_parameters))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 42,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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RERERHXOlN3c2PuwsURERNR6cNhYag1qPEMhIv1r21Epddjy6RARERERkT2p7ZKnpbWsUwBGWjgXIiIiIiKyM7VNbHenLRMhIiIiIiL7U9sZikoiEg4gFICLcZlSinNREBERERG1cnU2KComsxsBQ4NiB4B7APwATm5HRERERNTqmTNT9gMARgHIVkrNAhABwNmqWRERERERkV0wp0FxTSmlB1BWMdndRXAOCiIiIiIignl9KOJFpD2Ad2GY5K4QAKdcJiIiIiKiWuehWAlgo1LqmYpFq0RkJ4B2SqmjNsmOiIiIiIiatdrOUJwEsFREtAA+AfCxUuqIbdIiIiIiIiJ7UGMfCqXU/1NKDQYwHMAVAB+KyHERWSAigTbLkIiIiIiImq06O2UrpdKVUouUUrcDeATAZADHrZ4ZERERERE1e3U2KESkjYhMEJENAL4CcALAFKtnRkREREREzV6NDQoRGSMiHwA4D2A2DJPa9VJKTVNKbTWncBG5W0RSRSRNRF6qZv10ETlacftRRCIa+kCIiIiIiMj2auuU/TKAjQBeUEpdqW/BIuIA4C0AY2BolPwkInFKqWSTzc4AGK6UyhWRewCsBjCwvrGIiIiIiKhp1NigUErd2ciyowGkKaVOA4CIbAJwH4DKBoVS6keT7Q8A6NbImEREREREZEPmzJTdUF0BZJjcP1+xrCZPwNBHg4iIiIiI7IQ5M2U3lFSzTFW7ocidMDQohtWwfjYM/Tjg6+trqfyIiIiIiKiRrHmG4jyA7ib3uwHIrLqRiPQF8B6A+5RSl6srSCm1WikVqZSK7NSpk1WSJSIiIiKi+rNmg+InAAEi4i8iTgAeAhBnuoGI+ALYAuA3SqkTVsyFiIiIiIiswGqXPCmlykRkLoCvATgA+EAplSQicyrWrwKwAEBHAP8WEQAoU0pFWisnIiIiIiKyLFGq2m4NzVZkZKSKj49v6jSIiIiI6iQiCfyxlFo6a17yRERERERELRwbFERERERE1GBsUBARERERUYOxQUFERERERA3GBgURERERETUYGxRERERERNRgbFAQEREREVGDsUFBREREREQNxgYFERERERE1GBsURERERETUYGxQEBERERFRg7FBQUREREREDcYGBRERERERNRgbFERERERE1GBsUBARERERUYOxQUFERERERA3GBgURERERETUYGxRE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\n",
      "text/plain": [
       "<Figure size 720x216 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_cross_val_selection()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>对于每种参数设置，需要计算5个精度的值，交叉验证的每次划分都要计算一个精度值。然后，对每种参数设置平均验证精度。最后选取平均验证精度最高者<p>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 注意! 由于人们常常将交叉验证与网格搜索结合起来使用。因此，许多人使用交叉验证来通俗地代替指代交叉验证地网格搜索"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 划分数据,运用网格搜索并评估最终参数,整个过程如下所示"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 44,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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RETkWPiNn4iIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKpgsCQiIiIiVTBYEhEREZEqGCyJiIiISBUMlkRERESkCgZLIiIiIlIFgyURERERqYLBkoiIiIhUwWBJRERERKr4/2Od3zNxSO3BAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 700x210 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "mglearn.plots.plot_grid_search_overview()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "<p>由于带交叉验证的网格搜索是一种常用的调参方法，因此scikit-learn提供了<strong>GridSearchCV</strong>类，它以估计器的形式实现了这种方法。要使用GridSearchCV类。我们首先要用一个字典指定要搜索的参数，然后GridSearchCV会执行所有必要的模型拟合。字典的建是我们要调节的参数的名称(如gamma,C).字典的值就是我们参数的值(往往是有多个参数值组成的列表)</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 45,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "parameter grid:{'C': [0.001, 0.01, 0.1, 1, 10, 100], 'gamma': [0.001, 0.01, 0.1, 1, 10, 100]}\n"
     ]
    }
   ],
   "source": [
    "param_grid = {'C':[0.001,0.01,0.1,1,10,100],'gamma':[0.001,0.01,0.1,1,10,100]}\n",
    "print(\"parameter grid:{}\".format(param_grid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集精度:0.974\n"
     ]
    }
   ],
   "source": [
    "# 现在我们可以使用模型(SVC),要搜索的参数网格(param_grid)与要使用的交叉验证策略（5折分层交叉验证）\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "from sklearn.svm import SVC\n",
    "grid_search = GridSearchCV(SVC(),param_grid,cv=5)\n",
    "X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=0)\n",
    "grid_search.fit(X_train,y_train) # 构建估计器,此时该估计器内部教会调用交叉验证方法评估每种参数组合的精度\n",
    "# 此外grid_search还会依据训练集和最佳参数组合自动拟合一个新模型，此时我们可以调用他的score方法和predict方法\n",
    "print(\"测试集精度:{:.3f}\".format(grid_search.score(X_test,y_test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最佳参数组合:{'C': 10, 'gamma': 0.1}\n",
      "最佳交叉验证得分:0.973\n"
     ]
    }
   ],
   "source": [
    "# 模型找到的最佳参数保存在best_params_属性中,而交叉验证最佳精度保存在best_score_中\n",
    "print(\"最佳参数组合:{}\".format(grid_search.best_params_))\n",
    "print(\"最佳交叉验证得分:{:.3f}\".format(grid_search.best_score_))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 注意不要搞混score上的精度与best_score_中的精度."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Best estimator:SVC(C=10, gamma=0.1)\n"
     ]
    }
   ],
   "source": [
    "# 获取最佳参数对应的模型\n",
    "print(\"Best estimator:{}\".format(grid_search.best_estimator_))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 由于grid_search本身具有score和predict方法,所以不需要我们重新构建模型来预测数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 分析交叉验证结果\n",
    "<p>网格搜索的结果可以在cv_results_属性中找到，他是一个字典，其中保存了搜索的所有内容。</p>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "测试集最高的得分:0.974\n",
      "对应的最佳参数组合:{'C': 10, 'gamma': 0.1}\n"
     ]
    }
   ],
   "source": [
    "# 准备griv_search\n",
    "from sklearn.model_selection import train_test_split,GridSearchCV\n",
    "from sklearn.svm import SVC\n",
    "from sklearn.datasets import load_iris\n",
    "iris = load_iris()\n",
    "params_grid={'C':[0.001,0.01,0.1,1,10,100],'gamma':[0.001,0.01,0.1,1,10,100]}\n",
    "grid_search = GridSearchCV(SVC(),params_grid,cv=5)\n",
    "X_train,X_test,y_train,y_test = train_test_split(iris.data,iris.target,random_state=0)\n",
    "grid_search.fit(X_train,y_train)\n",
    "print(\"测试集最高的得分:{:.3f}\".format(grid_search.score(X_test,y_test)))\n",
    "print(\"对应的最佳参数组合:{}\".format(grid_search.best_params_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>mean_fit_time</th>\n",
       "      <th>std_fit_time</th>\n",
       "      <th>mean_score_time</th>\n",
       "      <th>std_score_time</th>\n",
       "      <th>param_C</th>\n",
       "      <th>param_gamma</th>\n",
       "      <th>params</th>\n",
       "      <th>split0_test_score</th>\n",
       "      <th>split1_test_score</th>\n",
       "      <th>split2_test_score</th>\n",
       "      <th>split3_test_score</th>\n",
       "      <th>split4_test_score</th>\n",
       "      <th>mean_test_score</th>\n",
       "      <th>std_test_score</th>\n",
       "      <th>rank_test_score</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.001200</td>\n",
       "      <td>0.000402</td>\n",
       "      <td>0.000999</td>\n",
       "      <td>0.000636</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.001</td>\n",
       "      <td>{'C': 0.001, 'gamma': 0.001}</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.022485</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.001607</td>\n",
       "      <td>0.000809</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.01</td>\n",
       "      <td>{'C': 0.001, 'gamma': 0.01}</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.022485</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.000403</td>\n",
       "      <td>0.000494</td>\n",
       "      <td>0.000605</td>\n",
       "      <td>0.000494</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.1</td>\n",
       "      <td>{'C': 0.001, 'gamma': 0.1}</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.022485</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.000599</td>\n",
       "      <td>0.000489</td>\n",
       "      <td>0.000400</td>\n",
       "      <td>0.000490</td>\n",
       "      <td>0.001</td>\n",
       "      <td>1</td>\n",
       "      <td>{'C': 0.001, 'gamma': 1}</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.022485</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.000400</td>\n",
       "      <td>0.000490</td>\n",
       "      <td>0.000393</td>\n",
       "      <td>0.000481</td>\n",
       "      <td>0.001</td>\n",
       "      <td>10</td>\n",
       "      <td>{'C': 0.001, 'gamma': 10}</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.022485</td>\n",
       "      <td>22</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   mean_fit_time  std_fit_time  mean_score_time  std_score_time param_C  \\\n",
       "0       0.001200      0.000402         0.000999        0.000636   0.001   \n",
       "1       0.001607      0.000809         0.000000        0.000000   0.001   \n",
       "2       0.000403      0.000494         0.000605        0.000494   0.001   \n",
       "3       0.000599      0.000489         0.000400        0.000490   0.001   \n",
       "4       0.000400      0.000490         0.000393        0.000481   0.001   \n",
       "\n",
       "  param_gamma                        params  split0_test_score  \\\n",
       "0       0.001  {'C': 0.001, 'gamma': 0.001}           0.347826   \n",
       "1        0.01   {'C': 0.001, 'gamma': 0.01}           0.347826   \n",
       "2         0.1    {'C': 0.001, 'gamma': 0.1}           0.347826   \n",
       "3           1      {'C': 0.001, 'gamma': 1}           0.347826   \n",
       "4          10     {'C': 0.001, 'gamma': 10}           0.347826   \n",
       "\n",
       "   split1_test_score  split2_test_score  split3_test_score  split4_test_score  \\\n",
       "0           0.347826           0.363636           0.363636           0.409091   \n",
       "1           0.347826           0.363636           0.363636           0.409091   \n",
       "2           0.347826           0.363636           0.363636           0.409091   \n",
       "3           0.347826           0.363636           0.363636           0.409091   \n",
       "4           0.347826           0.363636           0.363636           0.409091   \n",
       "\n",
       "   mean_test_score  std_test_score  rank_test_score  \n",
       "0         0.366403        0.022485               22  \n",
       "1         0.366403        0.022485               22  \n",
       "2         0.366403        0.022485               22  \n",
       "3         0.366403        0.022485               22  \n",
       "4         0.366403        0.022485               22  "
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import pandas as pd\n",
    "import IPython.display\n",
    "# 转化为DataFrame数据框\n",
    "results = pd.DataFrame(grid_search.cv_results_)\n",
    "# 显示前5行\n",
    "display(results.head())"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PolyCollection at 0x1e248b82280>"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import mglearn\n",
    "\n",
    "scores = np.array(results.mean_test_score).reshape(6,6)\n",
    "mglearn.tools.heatmap(scores,xlabel='gamma',ylabel='C',xticklabels=params_grid['gamma'],yticklabels=params_grid['C'],cmap='viridis')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.colorbar.Colorbar at 0x1e2492b6b80>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAsAAAAEeCAYAAACE86MtAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADh0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uMy4yLjIsIGh0dHA6Ly9tYXRwbG90bGliLm9yZy+WH4yJAAAgAElEQVR4nOzdeXxU1d348c+ZmSwkJIEkkJWwBUICAiqLCD6ibEKhqLVl8cENWvmJiIgtLVK1LlWrLFq02AKCCwX1UaGKsghWoVhEQUG2BAIhZA9kgYRM5s75/TEhySQhM4FkJpjv+/WaVzJzz7nfe2bmnHvm3HPvVVprhBBCCCGEaClM3t4AIYQQQgghPEk6wEIIIYQQokWRDrAQQgghhGhRpAMshBBCCCFaFOkACyGEEEKIFkU6wEIIIYQQokWxeHsDhBBCCCHElW/UTYE6/7TRoDzf/lC2UWt9SxNt0kVJB1gIIYQQQly2/NMGuzbGNSiPOSo5vIk2p17SARZCCCGEEJdNA3bs3t4Mt0gHWAghhBBCNAKNoaUDLIQQQgghWgjHCLD29ma4RTrAQgghhBCiUcgUCCGEEEII0WJoNIaWEWAhhBBCCNGCyBQIIYQQQgjRYmjAkA6wEEIIIYRoSWQEWAghhBBCtBgaZA6wEEIIIYRoWa6Ma0BIB1gIIYQQQjQCjZY5wEIIIYQQogXRYFwZ/V/pAAshhBBCiMvnuBPclUE6wEIIIYQQohEoDJS3N8It0gEWQgghhBCXTQN2mQIhhBBCCCFakitlBNjk7Q0QQgghhBDCk2QEWAghhBBCXDbHrZCvjBFg6QALIYQQQohGYdfSARZCCCGEEC2EjAALIYQQQogWRaMwrpDTy6QDLIQQQgghGoVMgRBCCCGEEC3GlTQF4soYpxZCCCGEEM2cwtCmBj3cWqtStyilDiulUpRSv69jeVul1IdKqR+UUruUUr1crVM6wEIIIYQQ4rJpwI6pQQ9XlFJm4FVgNJAETFJKJdVINg/Yq7XuDdwFvOxqvdIBFkIIIYQQjcJANejhhgFAitb6mNbaCqwBxtdIkwR8DqC1PgR0UkpF1LdS6QALIYQQQojLpnWTTIGIAU5We55e8Vp13wO3AyilBgAdgdj6VionwQkhhBBCiEZhb/hJcOFKqd3Vnv9da/33as/rWqGu8fx54GWl1F5gH7AHsNUXVDrAQgghhBDisjmuAtHgyQV5Wut+9SxPBzpUex4LZDjF1boIuBdAKaWA1IrHRUkHWAghhBBCNALl9pUdGuAboJtSqjNwCpgITHaKqlQboKRijvA04MuKTvFFSQdYCCGEEEJctgtXgWjUdWptU0o9CGwEzMAKrfWPSqnpFcuXAonAm0opAzgATHW1XukACyGEEEKIRmE0wZ3gtNYbgA01Xlta7f+dQLeGrFM6wEIIIYQQ4rJp1KXMAfaKK2MrhRBCCCGEaCQyAiyEEEIIIRqFvfFPgmsS0gEWQgghhBCX7RIvg+YV0gEWQgghhBCXTaOa5CS4piAdYCGEEEII0Sga+zJoTUU6wEIIIYQQ4rJpTVPcCKNJSAdYCCGEEEI0AoUdmQIhhBBCCCFaCI2MAAshhBBCiBZGrgIhhBBCCCFaDI3CLleBEEIIIYQQLYmMAAshhBBCiBZDI3eCE0IIIYQQLYrCkKtACCGEEEKIlkJGgIUQQgghRIsjI8BCCCGEEKLF0FrJCHBTCQ81604dfLy9GT8pR34I8PYm/CQVcyZPa93O29thCQjUPm1CPRave7tsj8UC8PHCGcd2tEfjFdvNHo0HkJ3a1uMxi89lNIs646v8tD+B3t6MJlPW0fNtfkKIZ9sFXzxfZ7zh2x/KmkWdqU5uhNFEOnXwYdfGOG9vxk/KqOg+3t6En6Qt+v0T3t4GAJ82oXSa9ojH4m28/0WPxQJob27t0XgApbrMo/G2loZ4NB7AK3dN8HjMLTvmN4s6408gA9Uwb29GkznyeH+Px/xk1CKPxosxB3k0nreYo5KbRZ25El1xHWAhhBBCCNH8aMAuc4CFEEIIIUTLoWQKhBBCCCGEaDkcl0GTEWAhhBBCCNGCyK2QhRBCCCFEi6FRMgIshBBCCCFaFruMAAshhBBCiJZCazBkBNhzPtt6jtmP52IYMHVyMHNnOl/0/0yBwdTZ2Rw7UY6/n2LZogh69fADoKDQ4NdzcvjxUBlKwbJFEQzq16pZxfNGzH6j+vLA4nsxmU18uvxz1r7wkdPy1m0CmbP8AaK7RmA9X86Cqa9x/MeTALx17FVKi89jN+wYNoMZA37vsnzeiOmNMjYXQ+I7Mm/MUEzKxPvf7WfZV984Lb9v8LWM7d0DAIvJRJd2oQx+YSmFpWUu89Zl67bzPP5EEYYBkycFMPNB52v3FhTYmT2ngBMnDPz8FIsWhNCjh+OGN/2vy6F1oMJsBrNFsXFDuFtl9HSd2bytlN/98QyGHe6eFMicmc7X7j1TYOf/PZJP6gkb/n6K1xaG0rOHb0U8OzMezefAoXKUgr8tDGNgP796433772KWPZ2BYcDICW25Y3p7p+VnCw1emZtOZpoVXz/FQ8/H0jHBH4CX56aze2sRIWEWlnzW3fWbWaHfwC48MGskJpPi04/3svbtnU7Le18dx1PP/ZKszEIAtv/7EG+v3A7A7b8awOhxfdFac/xYLi/++V+UWw23Y3uTq7Zi0M/7cc9TE9F2jWEzeG32Sn7ccYjY7tHMXzO7Ml1kl/asemItH768odnFvDGmM09cNwyzUqw58gN/++G/Tsvv7zWA8V0TAUebEB8SxtWrl1BoPe8y78V8sa2MJyvahYmTWjGjjnbht3MKK9uFlxYEk9Cj6kZYhqEZOyafiEgzK1e5vnFLS9h3NwctfgqEUqoD8CYQCdiBv2utX66RRgEvA2OAEuAerfV3DYljGJqZ83LZuDaG2CgLA0enMW5kIEkJVTuP5145Td9efnzwRjSHkq3MnJfD5vdiAXj4j7mMuimA95ZFYbVqSkrtzSqeN2KaTCZmLpnK3JFPk5d+miW7nmPn+t2kHUyvTDNp3u0c/T6VP/3iRTokRDNzyTR+N+KpyuWP3vwkRfnFLsvmrZjeKKMrnqozJqX449ibmbrqA7KLinn3/slsO3SUo7mnK9Os2PEtK3Z8C8DQhC7cPehqCkvL3Mpbk2Fo5s0vYu3qUKKizIz+WR4jR/qR0L1qR/bKX8/Sq6cPbywPJTnFxrzHCnlvbVjl8vffCyMs1P3Dat5oFx6Zd4b1a9oTE2Xmf8ZkMWZUAInVyvjSK4X07unLmhXtOJxcziOPneaTdyMA+N3jZxgxtBXv/KNdRbz67zRnGJrXn8zgqVWdCYu0MOe2owwYFkxcN//KNO+9lkPnJH/mLe1I+tHzLH0ig2fe7gLAsF+0ZeyUMBY9etLt99RkUsx85Bbmzl5NXk4RS5bdx87tyaQdz3NKt+/7k/xx7rtOr4WFB3HrHf2Z9r+vY7XamP/Ubdw0rCebPv2hMs2PyR8A9FFK7dda9wJQSoUCa4FOwHHgV1rrMxXL/gBMBQzgIa31xprbXF9+98vtuq3Y8/l+dq5/FIDOV8Uxf+0jTE16mPQjGUy/5reV6/ln+uvs+HBXs4tpUoqnBw3nzo3vknWumPU/v4staSkkF+RXpnl9/y5e3+9Yz7AOXZnWsx+F1vNu5a2LYWjmzy/indVtiYoyM+5n+YwY6U/37lXdklf/epaknj78Y3lbUlJszH+siDVrqzqQK5aXEB9vofis6zsztoR9d3PgmAN8ZUyBaMqttAFztNaJwHXADKVUUo00o4FuFY/fAH9raJBde87TtZMPXTr64OurmDA+iPUbzzmlOXDEys1DHLd+7NHNl+MnbWTn2igqNvjq61KmTg4GwNdX0Sak/tsnejqeN2ImDIgnIyWLrNQcbOU2vli7g+vH93NK0zExlj2f7wfg5OEMIjq1o037S79bladjeqOMbvBInekdG0na6QLSzxRSbtjZsO8wN/foetH0P7sqgQ37Dl9SXoA9e8vp1MlMx44WfH0V48e3YuMm5zupHUm2MWSIY6fQLd7CyXSD3NxLHx30dJ3ZvcdKl04WOleU8Y7xAXyyscQpzaHkcoZWlDGhmw9pJw2ycw2Kiu3s+Po8d08OrBav/qY5+fsSojr6Ehnni4+viRvGhvDfLUVOaU6mlNHneseIWmxXf3JOlXMmrxyAXgMCad2mYbeKTUiMJiP9NFkZBdhsdr7YcoDrh7g/emw2m/Dzs2AyK/z8fMjPc/7xGN3+aoDkGtl+D3yute4GfF7xnIp6MRHoCdwCvKaUqqtAdeZvCHfaivPnzlf+7x/o7zgOXMPVw3qReTSLnLS8Wsu8HbNveBTHiwo4WVxIud3Ov44dZERc/EXTj++SyLpjBy8p7wV7a7QL48b7s2nTeac0yckGg4c4jpLEx1tIr9YuZGYYfP55GRMnuzci2hL23c2FgWrQw1uarAOstc68MDKltS4GDgIxNZKNB97UDl8DbZRSUQ2JcyrLRoeYql+MMVEWTmXZnNL0SfLjww1nAccX8kR6OekZNo6dsNEuzMx9D2dz7Yg0fj0nm3Ml9f/C8nQ8b8QMjwklN73q13te+mnCY8Kc0hz74ThDbh8IQEL/eCI6tqNdrCON1vD8xvm8+s0LjPn1cJfl80ZMb5TRFU/VmfZBrckqrOp8ZBedJSK47tsJ+/tYGBLfiU0Hkhuc94KsTIOYqKqGOyrSRFamc+c2KcnChk8dO789e6ykpxtkZDq+p0rBxMn5jBydy1tvO3cqL8bTdSYjyyA2uqqMMVEWMmqU8aokX9Z/WgrA7j1lpKXbyMg0OH7CRniYmemzT3P9iExmzMl3GS8/20Z4VNXocnikD/nZ5U5pOiX6s3OjYyrCke9LyDllJT/T+T1oiPB2QeTmVH32eblFhLerfbvZpF4xLF05jWdfmkjHzo7pKvl5xby/5mve+b+ZrP1oFufOlfHtN6lO+dqGdAbHj8DqxgOrKv5fBdxa7fU1WusyrXUqkAIMqGOzL5bfbe60FQCDbx3A8gOLeebjP/DS1Nq/S4dOHMy2NTuaZczIwNZknqv6bDPPFRMZUPethP3NFm6M7cynx480OG91WZl2op3aBTPZmc7f+8QkC59VtAt791g5lW6QWZHmySeLmPdYECY3+08tYd/dHFy4DnBDHt7ikXFqpVQn4Gqg5sSgGKD6Mbh0au/w61XHj15Ujfdz7sy2nCk0uGb4CZYsL+DqXn5YLAqbTfPdvjKm392GbzfHEdjKxAt/rf/omKfjeSNmzXU7tsF5I9Y8/xFBbQJZ+t2L3PrgaFL2pGLYHDv82UPm80C/uTw25ll+/sAorroh0WUZPR3TG2VsiKasM+6U/YKbErqw52QGhaVlDc5budyNbZg5ozWFhXaGj8xl+Rsl9Orlg6Viv7H+wzA2f9aO1W+FsnLVOXZ+XVZ7hbW2yXVMT7cLjzwYTEGBnUHDM1m6opg+vXyxmMFmaPbuszLtrtb8Z3MUAQGKBUuKaq/QVbwaIyl33N+Os4V2Zo1N5uM38+mS1ArzZUx6c+ezTzmcxZ13LGH6PctY9/43/OnPvwSgdZA/g4Z0Z8qvXmXira/g7+/DsJG93AkbobXOrIiVCVyY6OxuPbhYfre5+53f8dEupiY9zJO3/YV7nprgtMziY2HQuH78+72dtfI1j5i1A+o6ay4Mj4tnd/YpCq0XRmvdz+ucpo6tqLGqB2YEUliouWVkHm+8UULPXhYsFtiy5Tzh4SZ69/apYy0XidcC9t3Ng2MKREMe3tLkJ8EppVoD/wc8rLWu2arX1fWv9ZVRSv0Gx+Fe4mKcNzk2ysLJU1W/qE5l2oiOcE4THGRmxeJIx8q1puuA43SOs1BSqh3zcq5xzJv7xdjWvLDk4nMZvRHPGzFz009XjnQChMeGkp/hnKekuJSXpr5W+fytY6+SlZoDQH6mo5IW5Bax46NdJAyIZ99XB5tVTG+U0V2NXWcsIc4nh2QXnSUypGqEJiK4NTnFzoflLhjTK4FPfjh0SXkviIoyc6raaGhmlp2ISOdDeUFBJhYvbOMojNYMGJRLXAdHmsiKtOHhZkbf4s/eveUMuq7+E8Q8XWdiosykZ1SV8VSmjagaZQwOMrF08YUjCJqeAzPoGGehtFQTE2Wm/zWOMt06NoCFLjrA4ZEW8jKrRnzzssoJrVG+gCAzs/4SWxnv1zceJiLWt9711ic3p5h27as++/B2weTnnXVKU1Jirfx/19dHmTnHRHBIK/pe05GszAIKCxwj+Nu/PEzSVbF8vmn/pW6OW/WgQSusVmf8Cah83Z22orp9Xx0kqmskwWFBlecI9B/dl5TvUinIKXRrWzwdM+tcMVGBVZ9tVGAQ2SVn60w7rksP1h+rausakre6qCiT01GSzCyD9pHOnaGgIBMLFjqmnWmtGTwolw4dzKxfd57Nm8rYtjWHsjIoLrYza2YBL/+1zUXjtYR9d3Nh9+K0hoZo0q63UsoHx478Ha31B3UkSQc6VHseC2TUTKS1/rvWup/Wul+7MOedSv++/qSkWklNK8dq1axdV8y4UYFOaQoKDaxWR9u47J0ibriuFcFBZiLbW+gQbeFwiqPR3rq9hKTu9e8gPB3PGzEPf5NCTLcoIju1x+JjYeiEwexcv9spTWBIABYfR0UePW0Y+748SElxKf4BfrRq7aiw/gF+XDuiD8f3uz7RxtMxvVFGdzRFnbEEOH9X9p3KomNoW2LaBONjNjHmqgS2HTpWK1BrP1/6dYpl66GjDc5bXd8+PqSmGqSl2bBaNevWlTJqhHMHtrDQXvn9fWd1KdcN9CUoyERJiZ2zZx2H/UpK7Pz7yzISElz/bvd0nbm2ry9HU8s5XlHG99eVMGak89zEgmplXLn6HIOv8yM4yEREezMx0RaOpDg6tF98dZ4e3eof2erWO4CM42VknbRSbrXz1ceFDBwW7JTmbJFBudXx3m1ae4ae/QMJCLr0OYSHD2UQ0yGUyKgQLBYTQ4cnsXPHEac0bUOr3uOExGhMJkVRYSk52UUk9ozBz8/x2V19badaJ89dRPaFKT4Vf3MqXnerHtSTv5bqdcaHqu+nO21FdNfIyv/jr+6Mj6/F6QTZmyYOYdua7e6U1ysxv8/LpHNIWzq0DsHHZGJcl0Q2p6XUShfk48t1kR3YVG2Zu3lr6lOjXfjXuvOMqKdd+OfqUgZUtAu//0MQu3a35z9ft2fJqyFcP9iv3s4vtIx9d3Nw4TJoDXl4S1NeBUIBy4GDWuuFF0m2HnhQKbUGGAgUXjhc5S6LRfHKn9szetIpDAPunRhMzwQ/lq4qAGD63W04mGzlnoeyMZsgsbsvyxZGVOZ/+dn2TJmRhbVc0znOhxWLIy4WyivxvBHTbthZMnM5z332GCaziY1vbOPEgXTG3j8CgI9f30xcYixzVz2IYdhJO5DOgmmO+WdtIkJ48gPHGchmi5lt/9zO7o17XZbR0zG9UUZXPFVnDLvmmU+2suyu2zGZFB989yMpuflM6NcbgLW7HWfmD0+M5z9HT1BabnOZtz4Wi+LPTwcz6c7TGHaYOKEVCQk+rHrLMXJ895RAklNsPDSrAJMZunezsPAlx84sN9fOfdMco+02A2671Z+bb/K/aKzqMT3dLix4NpRbJ+dgGDBlYiBJCb4se9PRIZl2VxCHk8v5zax8TCbo0d2H1xZUjfAteKYtUx/Mr4hn4W+Las/3rM5sUdz/RDRP3pOK3Q7D72hLXHd/Pl3t+CxGTw4jPeU8ix5Nx2RWdIj346HnYyvzvzgrjf3/PUfRGRv3Dj7IpFkRjPxV6MXCAWA3NEsWbuS5hZMwmUxs/OR7TqTmMXb8NQB8vO47/mdoImNvuwbDsGMts/HsEx8CcOhABl9tO8RrK6ZiGHaOHslmw/o99carsB64G3i+4u+6aq+vVkotBKJxnBRa16UOLpbfbe60FTf8YiDDp9yIUW5QVmrlmYmLKvP7tfLl2hG9WTz97802pqE1j+/cwpujfolZKd5N3kdyQT53JvQF4J3DjvZtVMfufHnqOKW2cpd5XbFYFE8/HcyUOx2XDpxQ0S689ZbjKMGUKQGkpNiYPasQsxm6dbPwl5cu/STklrDvbi6ulKtAKFfz9y55xUoNAb4C9uG4pBPAPCAOQGu9tGKHvwTHWbwlwL1a6911rK5Svz7+etfGuCbZ5pZqVHQfb2/CT9IW/f63Wut+rlM6NFWdaRXdQXea9sgllODSbLv/RY/FAmhvrv8kvKZQql3PQ25MW0ub9OojdXrlrgmuEzWifYfXkp23rxzH9IZs4AngI+BdHHUgDfil1vo0gFLqMeA+HCfOPay1/rTi9WXAUq31bqVU2MXy1ydYheqBalhjF7HZOLKsv8djbh+1yHWiRhRjdn0i3k+BOSq5QfuZphaW2E6PWTm+QXnevm65V8rQZCPAWuvt1D1Pq3oaDcxoqm0Q4koidUa0ZFclTCA7b98PdewI6+yJaq2fBZ6t4/Vp1f7Pv1h+IUTL9pO4E5wQQgghhPA+OQlOCCGEEEK0GE11HWCl1C1KqcNKqRSlVK0b2iilQpRS/1JKfa+U+lEpda+rdcoIsBBCCCGEaBSNfRJcxV0eXwVG4LgCzDdKqfVa6wPVks0ADmitxyml2gGHlVLvaK2tdawSkA6wEEIIIYRoDE1zd7cBQIrW+hhAxVWQxgPVO8AaCKo4Ubw1cJrad5Z0Ih1gIYQQQghx2TRNMge4rjs/DqyRZgmOyx5mAEHABK11vfeOljnAQgghhBCiUVzCHOBwpdTuao/f1FilO3d+HAXsxXFd8L7AEqVUcK1c1cgIsBBCCCGEuGwXToJroDwX1wF2586P9wLPV1wqNEUplQr0oO4b5AAyAiyEEEIIIRpJE1wF4hugm1Kqs1LKF5iIY7pDdWlUXPNbKRUBJADH6lupjAALIYQQQojLpmn8k+C01jal1IPARsAMrNBa/6iUml6xfCnwNLBSKbUPx5SJuVrrvPrWKx1gIYQQQgjRKJriRhha6w3AhhqvLa32fwYwsiHrlA6wEEII0YJ0n/aNx2MOWTbbo/G2j1rk0XgAMeYgj8dsdvQlzQH2CukACyGEEEKIy3aJJ8F5hXSAhRBCCCFEo5AOsBBCCCGEaDGa4iS4piIdYCGEEEII0Si0dICFEEIIIURL0hRXgWgK0gEWQgghhBCXTV9BV4GQO8EJIYQQQogW5ScxAvzZ1nPMfjwXw4Cpk4OZOzPUafmZAoOps7M5dqIcfz/FskUR9OrhB0BBocGv5+Tw46EylIJliyIY1K9Vs4rnjZj9RvXlgcX3YjKb+HT556x94SOn5a3bBDJn+QNEd43Aer6cBVNf4/iPJwF469irlBafx27YMWwGMwb83mX5vBHTG2VsLobEd2TemKGYlIn3v9vPsq+crwt63+BrGdu7BwAWk4ku7UIZ/MJSCkvLXOaty9Zt53n8iSIMAyZPCmDmg62dlhcU2Jk9p4ATJwz8/BSLFoTQo4cPAP2vy6F1oMJsBrNFsXFDuFtl9HSd2bytlN/98QyGHe6eFMicmSE14tn5f4/kk3rChr+f4rWFofTs4VsRz86MR/M5cKgcpeBvC8MY2M+v3njf/ruYZU9nYBgwckJb7pje3mn52UKDV+amk5lmxddP8dDzsXRM8Afg5bnp7N5aREiYhSWfdXf9ZlboN7ALD8waicmk+PTjvax9e6fT8t5Xx/HUc78kK7MQgO3/PsTbK7cDcPuvBjB6XF+01hw/lsuLf/4X5VbD7dje5KqtGPTzftzz1ES0XWPYDF6bvZIfdxwitns089dUXf82skt7Vj2xlg9f3lAzhNdjeqOMN8Z05onrhmFWijVHfuBvP/zXafn9vQYwvmsi4GiH4kPCuHr1Egqt513mrcsX28p4sqIdmjipFTPqaId+O6ewsh16aUEwCRXtEIBhaMaOySci0szKVW1dxgPv9Be8rcXPAVZKrQDGAjla6151LA8B3gbiKrbjJa31Gw2NYxiamfNy2bg2htgoCwNHpzFuZCBJCVU7j+deOU3fXn588EY0h5KtzJyXw+b3YgF4+I+5jLopgPeWRWG1akpK7c0qnjdimkwmZi6ZytyRT5OXfpolu55j5/rdpB1Mr0wzad7tHP0+lT/94kU6JEQzc8k0fjfiqcrlj978JEX5xS7L5q2Y3iijK56qMyal+OPYm5m66gOyi4p59/7JbDt0lKO5pyvTrNjxLSt2fAvA0IQu3D3oagpLy9zKW5NhaObNL2Lt6lCiosyM/lkeI0f6kdC9asfyyl/P0qunD28sDyU5xca8xwp5b21Y5fL33wsjLNT9A1beaBcemXeG9WvaExNl5n/GZDFmVACJ1cr40iuF9O7py5oV7TicXM4jj53mk3cjAPjd42cYMbQV7/yjXUU87TLe609m8NSqzoRFWphz21EGDAsmrpt/ZZr3Xsuhc5I/85Z2JP3oeZY+kcEzb3cBYNgv2jJ2ShiLHj3p9ntqMilmPnILc2evJi+niCXL7mPn9mTSjjvfbXTf9yf549x3nV4LCw/i1jv6M+1/X8dqtTH/qdu4aVhPNn36g1ux66obSqlQYC3QCTgO/EprfaaOvLcAL+O4heoyrfXzbhca99qKPZ/vZ+f6RwHofFUc89c+wtSkh0k/ksH0a35buZ5/pr/Ojg93NbuYXimjUjw9aDh3bnyXrHPFrP/5XWxJSyG5IL8yzev7d/H6fse6hnXoyrSe/Si0nncrb02GoZk/v4h3VrclKsrMuJ/lM2KkP927V3WDXv3rWZJ6+vCP5W1JSbEx/7Ei1qyt6rCuWF5CfLyF4rP118/qMT3dX/C+K+cqEE05BWIlcEs9y2cAB7TWfYChwAKllG9Dg+zac56unXzo0tEHX1/FhPFBrN94zinNgSNWbh4SAECPbr4cP2kjO9dGUbHBV1+XMnVyMAC+voo2IeZmFc8bMRMGxJORkkVWag62chtfrN3B9eP7OaXpmBjLns/3A3DycAYRndrRpn1IXatzi6djeqOMbliJB+pM79hI0k4XkH6mkHLDzoZ9h7m5R9eLpv/ZVQls2Hf4kvIC7NlbTqdOZjp2tGlxBZwAACAASURBVODrqxg/vhUbN5U5pTmSbGPIEMdOoVu8hZPpBrm5lz466Ok6s3uPlS6dLHSuKOMd4wP4ZGOJU5pDyeUMrShjQjcf0k4aZOcaFBXb2fH1ee6eHFgtXv1Nc/L3JUR19CUyzhcfXxM3jA3hv1uKnNKcTCmjz/WOEa7Yrv7knCrnTF45AL0GBNK6jeu2p7qExGgy0k+TlVGAzWbniy0HuH6I+6PHZrMJPz8LJrPCz8+H/LwG/XhcSe268Xvgc611N+DziudOlFJm4FVgNJAETFJKJTUksDttxflz5yv/9w/0d0yErOHqYb3IPJpFTlperWXejumNMvYNj+J4UQEniwspt9v517GDjIiLv2j68V0SWXfs4CXlBdhbox0aN96fTZvOO6VJTjYYPMTRpMbHW0iv1g5lZhh8/nkZEye7PwLrjf5Cc6C1atDDW5qsA6y1/hK4+LCQ44YhQUopBbSuSGtraJxTWTY6xFT9gouJsnAqy3k1fZL8+HDDWcDxhTyRXk56ho1jJ2y0CzNz38PZXDsijV/PyeZcSf2/sDwdzxsxw2NCyU2v+iWdl36a8JgwpzTHfjjOkNsHApDQP56Iju1oF+tIozU8v3E+r37zAmN+Pdxl+bwR0xtldMVTdaZ9UGuyCqs6H9lFZ4kIbl1nWn8fC0PiO7HpQHKD816QlWkQE1XVcEdFmsjKdO7cJiVZ2PCpY2e0Z4+V9HSDjEzH91QpmDg5n5Gjc3nrbedO5cV4us5kZBnERleVMSbKQkaNMl6V5Mv6T0sB2L2njLR0GxmZBsdP2AgPMzN99mmuH5HJjDn5LuPlZ9sIj6oaXQ6P9CE/u9wpTadEf3ZudExFOPJ9CTmnrORnNvjrUhWjXRC5OVWffV5uEeHtat/6NalXDEtXTuPZlybSsbNjukp+XjHvr/mad/5vJms/msW5c2V8+02q27EvUjfGA6sq/l8F3FpH1gFAitb6mNbaCqypyOc2d9oKgMG3DmD5gcU88/EfeGnq32otHzpxMNvW7GiWMb1RxsjA1mSeq/o+ZZ4rJjKg7lsJ+5st3BjbmU+PH2lw3guyMu1EO7VDZrIznetZYpKFzyraob17rJxKN8isSPPkk0XMeywIUwP6a97oL3jbhTvBNeThLd48CW4JkAhkAPuAWVrrBn+6dfwIRdV4P+fObMuZQoNrhp9gyfICru7lh8WisNk03+0rY/rdbfh2cxyBrUy88NdaR9C8Gs8bMWuu27ENzhux5vmPCGoTyNLvXuTWB0eTsicVw+bY4c8eMp8H+s3lsTHP8vMHRnHVDYkuy+jpmN4oYyNolDrjTtkvuCmhC3tOZlBYWtbgvJXL3diGmTNaU1hoZ/jIXJa/UUKvXj5YKvYb6z8MY/Nn7Vj9VigrV51j59dltVdYa5tcx/R0u/DIg8EUFNgZNDyTpSuK6dPLF4sZbIZm7z4r0+5qzX82RxEQoFiwpKj2Cl3Fq3HpoTvub8fZQjuzxibz8Zv5dElqhfkyJr2589mnHM7izjuWMP2eZax7/xv+9OdfAtA6yJ9BQ7oz5VevMvHWV/D392HYyFqzfBoqQmudWbEdmUD7OtLEANXneaRXvOY2d7/zOz7axdSkh3nytr9wz1MTnJZZfCwMGtePf7+3s1a+5hDTG2Wkjktl6TpbCxgeF8/u7FMUWi+M2Lqft2p5HVtQYzUPzAiksFBzy8g83nijhJ69LFgssGXLecLDTfTu7VPHWuqJ6YX+gtdpR7kb8vAWb54ENwrYC9wMdAU2K6W+0lrXavmVUr8BfgMQF+O8ybFRFk6eqvpFdSrTRnSEc5rgIDMrFkcCjkrddcBxOsdZKCnVjnk51zjmzf1ibGteWFLfAJzn43kjZm766cqRToDw2FDyM5zzlBSX8tLU1yqfv3XsVbJScwDIz3RU0oLcInZ8tIuEAfHs++pgs4rpjTI2gkuqM5YQ55M1sovOEhlSNVoSEdyanGLnw3IXjOmVwCc/HLqkvBdERZk5VW00NDPLTkSk86G8oCATixe2ARzf3wGDconr4EgTWZE2PNzM6Fv82bu3nEHX1X+CmKfrTEyUmfSMqjKeyrQRVaOMwUEmli6+cARB03NgBh3jLJSWamKizPS/xlGmW8cGsNBFBzg80kJeZtWIb15WOaE1yhcQZGbWX2Ir4/36xsNExDZ4xkyl3Jxi2rWv+uzD2wWTn3fWKU1JibXy/11fH2XmHBPBIa3oe01HsjILKCxwjOBv//IwSVfF8vmm/Ze8PW6qa3ipzl1u9TrjT0Dl6+60FdXt++ogUV0jCQ4LqjxHoP/ovqR8l0pBTqFbG+3pmN4oY9a5YqICq75PUYFBZJecrTPtuC49WH+sqn1tSN7KNFEmp6MymVkG7SOdxwCDgkwsWOiY5qa1ZvCgXDp0MLN+3Xk2bypj29YcysqguNjOrJkFvPzXNvXG9EZ/oTm4Uq4D7M0R4HuBD7RDCpAK9Kgrodb671rrflrrfu3CnHcq/fv6k5JqJTWtHKtVs3ZdMeNGBTqlKSg0sFodbd6yd4q44bpWBAeZiWxvoUO0hcMpjkZ76/YSkrrXv4PwdDxvxDz8TQox3aKI7NQei4+FoRMGs3P9bqc0gSEBWHwcFXn0tGHs+/IgJcWl+Af40aq1o8L6B/hx7Yg+HN/v+kQbT8f0RhkbwSXVGUuA83dl36ksOoa2JaZNMD5mE2OuSmDboWO11tHaz5d+nWLZeuhog/NW17ePD6mpBmlpNqxWzbp1pYwa4dyBLSy0V35/31ldynUDfQkKMlFSYufsWccgd0mJnX9/WUZCguvf7Z6uM9f29eVoajnHK8r4/roSxox0nitYUK2MK1efY/B1fgQHmYhobyYm2sKRFEeH9ouvztOjW/0jTd16B5BxvIysk1bKrXa++riQgcOCndKcLTIotzreu01rz9CzfyABQZc+h/DwoQxiOoQSGRWCxWJi6PAkdu444pSmbWjVe5yQGI3JpCgqLCUnu4jEnjH4+Tk+u6uv7VTr5LlLkK2UigKo+JtTR5p0oEO157E4jqDUUr3O+FD1/XSnrYjuGln5f/zVnfHxtTidIHvTxCFsW7Pd7YJ5OqY3yvh9XiadQ9rSoXUIPiYT47oksjktpVa6IB9frovswKZqy9zNW12fGu3Qv9adZ0Q97dA/V5cyoKId+v0fgti1uz3/+bo9S14N4frBfi47v+Cd/oK3aa6cOcDeHAFOA4YBXymlIoAEoP49aR0sFsUrf27P6EmnMAy4d2IwPRP8WLqqAIDpd7fhYLKVex7KxmyCxO6+LFsYUZn/5WfbM2VGFtZyTec4H1YsjrhYKK/E80ZMu2FnyczlPPfZY5jMJja+sY0TB9IZe/8IAD5+fTNxibHMXfUghmEn7UA6C6Y55oO1iQjhyQ8cZwSbLWa2/XM7uzfudVlGT8f0RhkbQaPUGcOueeaTrSy763ZMJsUH3/1ISm4+E/r1BmDtbseZ+cMT4/nP0ROUlttc5q2PxaL489PBTLrzNIYdJk5oRUKCD6vecowc3z0lkOQUGw/NKsBkhu7dLCx8ybFzyc21c980x2i7zYDbbvXn5pv8LxqrekxPtwsLng3l1sk5GAZMmRhIUoIvy950dBCm3RXE4eRyfjMrH5MJenT34bUFVSNuC55py9QH8yviWfjbotrzL6szWxT3PxHNk/ekYrfD8DvaEtfdn09XOz6L0ZPDSE85z6JH0zGZFR3i/Xjo+djK/C/OSmP/f89RdMbGvYMPMmlWBCN/FXqxcADYDc2ShRt5buEkTCYTGz/5nhOpeYwdfw0AH6/7jv8ZmsjY267BMOxYy2w8+8SHABw6kMFX2w7x2oqpGIado0ey2bB+T73x3LAeuBt4vuLvujrSfAN0U0p1Bk4BE4HJDQniTltxwy8GMnzKjRjlBmWlVp6ZuKgyv18rX64d0ZvF0//ebGN6o4yG1jy+cwtvjvolZqV4N3kfyQX53JnQF4B3Djva1FEdu/PlqeOU2spd5q2PxaJ4+ulgptzpuFThhIp26K23HEclpkwJICXFxuxZhZjN0K2bhb+8dHknPXujv+B9V85VIJSr+XuXvGKl/onjTPVwIBt4AvAB0FovVUpF4zizNwrHYarntdZvu1pvvz7+etfGuCbZ5pZqVHQfb2/CT9IW/f63Wut+rlM6NFWdaRXdQXea9kiDt/9Sbbv/RY/FAmhvrv8kvKZQql3PQ25MW0ub9OojdXrlrgmuEzWyLTvm11lnLlI3PgLexXFZwDTgl1rr0xX1ZJnWekxF3jHAYhyXQVuhtX7W1XYEq1A9UA1rnEIJAI4s6+/ReNtHLXKdqJHFmOs/Ea8pmKOSG7SfaWoB3aJ1t0VTG5Tnh3HPeKUMTTYCrLWe5GJ5BjCyqeILcaWROiNE3eqpG7V6qRX1ZEy15xsA13dlEEI0ihZ/IwwhhBBCCNFyOK7sIB1gIYQQQgjRglwpc4ClAyyEEEIIIRqFN6/t2xDSARZCCCGEEI1CpkAIIYQQQogWQ+Pda/s2hHSAhRBCCCFEo7hCZkB49U5wQgghhBBCeJyMAAshhBBCiMsnl0ETQgghhBAtzhUyB0I6wEIIIYQQolHICLAQQgghBNB92jcejTdk2WyPxgPYPmqRx2M2R3IdYCGEEEII0WJoZARYCCGEEEK0JBqQDrAQQgghhGhJZAqEEEIIIYRoWaQDLIQQQgghWg65FbIQQgghhGhpZARYCCGEEEK0GFfQneBM3t4AIYQQQgjxE6Eb+HCDUuoWpdRhpVSKUur3dSz/rVJqb8Vjv1LKUEqF1rfOn8QI8GdbzzH78VwMA6ZODmbuTOcynykwmDo7m2MnyvH3UyxbFEGvHn4AFBQa/HpODj8eKkMpWLYogkH9WjWreN6I2W9UXx5YfC8ms4lPl3/O2hc+clreuk0gc5Y/QHTXCKzny1kw9TWO/3gSgLeOvUpp8Xnshh3DZjBjQK3varOI6Y0yNhdD4jsyb8xQTMrE+9/tZ9lXzhepv2/wtYzt3QMAi8lEl3ahDH5hKYWlZS7z1mXrtvM8/kQRhgGTJwUw88HWTssLCuzMnlPAiRMGfn6KRQtC6NHDB4D+1+XQOlBhNoPZoti4IdytMnq6zmzeVsrv/ngGww53TwpkzsyQGvHs/L9H8kk9YcPfT/HawlB69vCtiGdnxqP5HDhUjlLwt4VhDOznV2+8b/9dzLKnMzAMGDmhLXdMb++0/GyhwStz08lMs+Lrp3jo+Vg6JvgD8PLcdHZvLSIkzMKSz7q7fjMr9BvYhQdmjcRkUnz68V7Wvr3TaXnvq+N46rlfkpVZCMD2fx/i7ZXbAbj9VwMYPa4vWmuOH8vlxT//i3Kr4XZsb3LVVgz6eT/ueWoi2q4xbAavzV7JjzsOEds9mvlrqm7IENmlPaueWMuHL29odjFbQhlvjOnME9cNw6wUa478wN9++K/T8vt7DWB810TA0e7Fh4Rx9eolFFrPu8x7MV9sK+PJirZv4qRWzKij7fvtnMLKtu+lBcEkVLR9AIahGTsmn4hIMytXtXUrpvc17giwUsoMvAqMANKBb5RS67XWBy6k0Vq/CLxYkX4cMFtrfbq+9TZZB1gptQIYC+RorXtdJM1QYDHgA+RprW9saBzD0Mycl8vGtTHERlkYODqNcSMDSUqo2nk898pp+vby44M3ojmUbGXmvBw2vxcLwMN/zGXUTQG8tywKq1VTUmpvVvG8EdNkMjFzyVTmjnyavPTTLNn1HDvX7ybtYHplmknzbufo96n86Rcv0iEhmplLpvG7EU9VLn/05icpyi92WTZvxfRGGV3xVJ0xKcUfx97M1FUfkF1UzLv3T2bboaMcza1qK1bs+JYVO74FYGhCF+4edDWFpWVu5a3JMDTz5hexdnUoUVFmRv8sj5Ej/UjoXtXIv/LXs/Tq6cMby0NJTrEx77FC3lsbVrn8/ffCCAt1/4CVN9qFR+adYf2a9sREmfmfMVmMGRVAYrUyvvRKIb17+rJmRTsOJ5fzyGOn+eTdCAB+9/gZRgxtxTv/aFcRr/5hEcPQvP5kBk+t6kxYpIU5tx1lwLBg4rr5V6Z577UcOif5M29pR9KPnmfpExk883YXAIb9oi1jp4Sx6NGTbr+nJpNi5iO3MHf2avJyiliy7D52bk8m7XieU7p935/kj3PfdXotLDyIW+/oz7T/fR2r1cb8p27jpmE92fTpD27Hr4urOqOUUsDLwBigBLhHa/1dQ2K401bs+Xw/O9c/CkDnq+KYv/YRpiY9TPqRDKZf89vK9fwz/XV2fLir2cVsEWVUiqcHDefOje+Sda6Y9T+/iy1pKSQX5FemeX3/Ll7f71jPsA5dmdazH4XW827lrYthaObPL+Kd1W2JijIz7mf5jBjpT/fuVV2vV/96lqSePvxjeVtSUmzMf6yINWurfqyvWF5CfLyF4rNXyMRaaIo5wAOAFK31MQCl1BpgPHDgIuknAf90tdKmnAKxErjlYguVUm2A14Cfa617Ar+8lCC79pynaycfunT0wddXMWF8EOs3nnNKc+CIlZuHBADQo5svx0/ayM61UVRs8NXXpUydHAyAr6+iTYi5WcXzRsyEAfFkpGSRlZqDrdzGF2t3cP34fk5pOibGsufz/QCcPJxBRKd2tGkfUtfq3OLpmN4ooxtW4oE60zs2krTTBaSfKaTcsLNh32Fu7tH1oul/dlUCG/YdvqS8AHv2ltOpk5mOHS34+irGj2/Fxk1lTmmOJNsYMsTROe0Wb+FkukFu7qWPDnq6zuzeY6VLJwudK8p4x/gAPtlY4pTmUHI5QyvKmNDNh7STBtm5BkXFdnZ8fZ67JwdWi1d/05z8fQlRHX2JjPPFx9fEDWND+O+WIqc0J1PK6HO9Y7Qptqs/OafKOZNXDkCvAYG0buO67akuITGajPTTZGUUYLPZ+WLLAa4f4v7osdlsws/Pgsms8PPzIT+vUX48rqSeOgOMBrpVPH4D/K2hAdxpK86fO1/5v3+gf50XQr16WC8yj2aRk5ZXa5m3Y7aEMvYNj+J4UQEniwspt9v517GDjIiLv2j68V0SWXfs4CXlvWBvjbZv3Hh/Nm0675QmOdlg8BDHkaD4eAvp1dq+zAyDzz8vY+Jk10eJm5XGnwIRA1T/tZ5e8VotSqkAHG3C/7laaZN1gLXWXwL1DT9PBj7QWqdVpM+5lDinsmx0iKn6NRUTZeFUls0pTZ8kPz7ccBZw7BhPpJeTnmHj2Akb7cLM3PdwNteOSOPXc7I5V1L/SI+n43kjZnhMKLnpVb9s89JPEx4T5pTm2A/HGXL7QAAS+scT0bEd7WIdabSG5zfO59VvXmDMr4e7LJ83YnqjjK54qs60D2pNVmFV5yO76CwRwa3rTOvvY2FIfCc2HUhucN4LsjINYqKqOltRkSayMp07t0lJFjZ86tgx7NljJT3dICPT8T1VCiZOzmfk6Fzeetu5U3kxnq4zGVkGsdFVZYyJspBRo4xXJfmy/tNSAHbvKSMt3UZGpsHxEzbCw8xMn32a60dkMmNOvst4+dk2wqOqRpfDI33Izy53StMp0Z+dGx1TEY58X0LOKSv5mc7vQUOEtwsiN6fqs8/LLSK8XVCtdEm9Yli6chrPvjSRjp0d01Xy84p5f83XvPN/M1n70SzOnSvj229SL3lbLnCjzowH3tQOXwNtlFJRDYnhTlsBMPjWASw/sJhnPv4DL02t3c8eOnEw29bsaJYxW0IZIwNbk3mu6vubea6YyIDa318Af7OFG2M78+nxIw3OW11Wpp1op7bPTHamc91OTLLwWUXbt3ePlVPpBpkVaZ58soh5jwVhujLOKXO4cCe4hjwgXCm1u9rjNzXWWtc7cLGu8zhgh6vpD+Ddk+C6A22VUl8opb5VSt11KSup644jqsZbNXdmW84UGlwz/ARLlhdwdS8/LBaFzab5bl8Z0+9uw7eb4whsZeKFv55pVvG8EbPmuh3b4LwRa57/iKA2gSz97kVufXA0KXtSMWyOHf7sIfN5oN9cHhvzLD9/YBRX3ZDosoyejumNMjaCRqkz7pT9gpsSurDnZAaFpWUNzlu53I1tmDmjNYWFdoaPzGX5GyX06uWDpaL/uv7DMDZ/1o7Vb4WyctU5dn5dVnuFtbbJdUxPtwuPPBhMQYGdQcMzWbqimD69fLGYwWZo9u6zMu2u1vxncxQBAYoFS4pqr9BVvBr7iDvub8fZQjuzxibz8Zv5dElqhfkyJr2589mnHM7izjuWMP2eZax7/xv+9GfHQYrWQf4MGtKdKb96lYm3voK/vw/DRtY5y6exuT1ydDHufud3fLSLqUkP8+Rtf+GepyY4LbP4WBg0rh//fm9nrXzNIWZLKGNdfSh9kT7U8Lh4dmefotB6YbTW/bzOaerYihqremBGIIWFmltG5vHGGyX07GXBYoEtW84THm6id2+fOtbyk5Onte5X7fH3GsvTgQ7VnscCGRdZ10TcmP4A3j0JzgJcCwwDWgE7lVJfa62P1ExY8WvgNwBxMc6bHBtl4eSpqlGNU5k2oiOc0wQHmVmxOBJwVLCuA47TOc5CSal2zA+8xjFv7hdjW/PCkvp/NHg6njdi5qafrhzpBAiPDSU/wzlPSXEpL019rfL5W8deJSvVMSCZn+noLBTkFrHjo10kDIhn31cHm1VMb5SxEVxSnbGEOJ84kV10lsiQqtGLiODW5BQ7Tw+4YEyvBD754dAl5b0gKsrMqWqjoZlZdiIinQ+/BwWZWLywDeD4/g4YlEtcB0eayIq04eFmRt/iz9695Qy6rv4TxDxdZ2KizKRnVJXxVKaNqBplDA4ysXTxhSMImp4DM+gYZ6G0VBMTZab/NY4y3To2gIUuOsDhkRbyMqtGfPOyygmtUb6AIDOz/hJbGe/XNx4mIta33vXWJzenmHbtqz778HbB5OeddUpTUmKt/H/X10eZOcdEcEgr+l7TkazMAgoLHCP42788TNJVsXy+af8lb4+b3B45ql5n/AmofN2dtqK6fV8dJKprJMFhQZXnCPQf3ZeU71IpyCl0a6M9HbMllDHrXDFRgVXf36jAILJLztaZdlyXHqw/VtWeNyRvdVFRJqcjQZlZBu0jnccdg4JMLFjomFqntWbwoFw6dDCzft15Nm8qY9vWHMrKoLjYzqyZBbz81zYu43pbE9wK+Rugm1KqM3AKRyd3cs1ESqkQ4Ebgf91ZqTdHgNOBz7TW57TWecCXQJ+6Emqt/37hl0G7MOedSv++/qSkWklNK8dq1axdV8y4UYFOaQoKDaxWxyey7J0ibriuFcFBZiLbW+gQbeFwiqPR3rq9hKTu9e8gPB3PGzEPf5NCTLcoIju1x+JjYeiEwexcv9spTWBIABYfxw539LRh7PvyICXFpfgH+NGqtaPj4B/gx7Uj+nB8v+sTbTwd0xtlbASXVGcsAc7flX2nsugY2paYNsH4mE2MuSqBbYeO1VpHaz9f+nWKZeuhow3OW13fPj6kphqkpdmwWjXr1pUyaoRzB7aw0F75/X1ndSnXDfQlKMhESYmds2cdhwNLSuz8+8syEhJc/273dJ25tq8vR1PLOV5RxvfXlTBmpPO8vYJqZVy5+hyDr/MjOMhERHszMdEWjqQ4OrRffHWeHt3qH/Xp1juAjONlZJ20Um6189XHhQwcFuyU5myRQbnV8d5tWnuGnv0DCQhq2Lzf6g4fyiCmQyiRUSFYLCaGDk9i5w7n315tQ6ve44TEaEwmRVFhKTnZRST2jMHPz/HZXX1tp1onzzURt0eOqtcZH6q+n+60FdFdIyv/j7+6Mz6+FqcTZG+aOIRta7a7vdGejtkSyvh9XiadQ9rSoXUIPiYT47oksjktpVa6IB9frovswKZqy9zNW1OfGm3fv9adZ0Q9bd8/V5cyoKLt+/0fgti1uz3/+bo9S14N4frBfldE5xdo9DnAWmsb8CCwETgIvKu1/lEpNV0pNb1a0tuATVrr+kdlKnhzBHgdsEQpZQF8gYHAooauxGJRvPLn9oyedArDgHsnBtMzwY+lqwoAmH53Gw4mW7nnoWzMJkjs7suyhRGV+V9+tj1TZmRhLdd0jvNhxeKIi4XySjxvxLQbdpbMXM5znz2GyWxi4xvbOHEgnbH3jwDg49c3E5cYy9xVD2IYdtIOpLNgmmNuVpuIEJ78wHF2rtliZts/t7N7416XZfR0TG+UsRE0Sp0x7JpnPtnKsrtux2RSfPDdj6Tk5jOhX28A1u52nJk/PDGe/xw9QWm5zWXe+lgsij8/HcykO09j2GHihFYkJPiw6i1HG3X3lECSU2w8NKsAkxm6d7Ow8CVHQ5+ba+e+aY7RdpsBt93qz803+V80VvWYnm4XFjwbyq2TczAMmDIxkKQEX5a96dhZT7sriMPJ5fxmVj4mE/To7sNrC6pGvxY805apD+ZXxLPwt0W150JWZ7Yo7n8imifvScVuh+F3tCWuuz+frnZ8FqMnh5Gecp5Fj6ZjMis6xPvx0POxlflfnJXG/v+eo+iMjXsHH2TSrAhG/qreS2ZiNzRLFm7kuYWTMJlMbPzke06k5jF2/DUAfLzuO/5naCJjb7sGw7BjLbPx7BMfAnDoQAZfbTvEayumYhh2jh7JZsP6PfXGayTrgQcrzhofCBRqrTMbsgJ32oobfjGQ4VNuxCg3KCu18szEqmrp18qXa0f0ZvH0mkd1m0/MllBGQ2se37mFN0f9ErNSvJu8j+SCfO5M6AvAO4cdbfiojt358tRxSm3lLvO6YrEonn46mCl3Oi6POKGi7XvrLceRkClTAkhJsTF7ViFmM3TrZuEvLzXpidae0QQ3wtBabwA21HhtaY3nK3GcGOsW5Wr+3qVSSv0TGAqEA9nAEzgu3VS50Uqp3wL3AnZgmdZ6sav19uvjr3dtjGuSbW6pRkXXOYgoLtMW/f63Wut+rlM6NFWdaRXdQXea9kiDs43cvgAAIABJREFUt/9Sbbv/RY/FAmhvrv8kvKZQql3PQ25MW0s9v1N85a4JrhM1si075jdqnam4DNoSHGeFlwD3aq131722KsEqVA9UwxpeANFsHFnW3+Mxt49q8HjEZYuLzWpQnWlqfp1iddRjsxqU58RvfueVMjTZCLDWepIbaSovXCxESyd1RoiGcVVntGOEZ4aHNkcI0YC7u3nbT+JOcEIIIYQQwttUk0yBaArSARZCCCGEEI1DRoCFEEIIIUSLIh1gIYQQQgjRokgHWAghhBBCtBgXboV8BZAOsBBCCCGEaBRKRoCFEEIIIUSLcoV0gOu9FbJSKl4pNbiO129QSnVtus0S4spUos9SoGvf4lXqjGgJSkrzKSg6Uev1M4XHKSl1fecsIYTwlHo7wMBioLiO10srlgkhqjnCXsx1H1iROiN+8o6kbsBs9qv1utnkw5HUDXXkEEL81CjdsIe3uJoC0Ulr/UPNF7XWu5VSnZpki4TcmvgKVkoJ/5+9O4+PokgfP/6pmclBLsKZhIQ7EAgIiAFEcBcFRBDFcwVcrw0qHqznyq7iLSorKrqA6A8Q1lVB/XqwgiIqKiKuIKAoh4QrhJwcOSAhyfTU748ekkzIMUnmSMjzfr3yIpOu6qefma7uoqa6O1xFnvb35tRmCnx8QGvv23B+EWE56e9NcEtR8THCQ6NP+3tEeCxFxbl+2CLRXPWcstHnMYcvvNfnMWG6H2LW4gy5CC64hmUtPLkhQpwJHBg1LZY2I85oDoe9hmWlPtwSIYRfNKFHIdc2BWKjUuqWyn9USiUDP3lnk4RouiJozSG997S/S5sRzUFEWCyHMk8feTuUtYmI0A5+2CIhhKhabSPA9wAfKqWuo/zknQQEAld4c8OEaIp60p9f+J4MnQoQp5R6AWkzopno2fUSftn5Fhk5PxMRFgtA/vFDaG3Qr9dkP2+dEMInmsgIcI0dYK11FnCeUuoCoK/zzyu11l95fcuEaIKCVDCDuJCjOpvNfFsC7EfajGgmggLDGNTvNo7m7uV4YRYAbVv1pHWk3ABFiObijLoPsNZ6LbDWy9sixBmjtWoPmmyt9b/8vS1C+FrryG60juzm780QQvjDmdQBFkIIIYQQolbSARZCCCGEEM2Fv+/tWxfSARZCCCGEEJ5xhtwHuEn47KsT3PtoDoYByZMjmD6ttcvyY7kGyfdmsfdAKcFBioUvRdG3l/m0otw8g1vuz+a3ncUoBQtfimJoUs23a/V1PICkMQO4Y87NWKwWPl30JctnfeSyPCwylPsX3UGH7lGUnCzlheT57P/tIABv7p1HUcFJHIYDw25w5+C/N7p4zSXHxmJ4fGceGjcCi7Lw/uZfWbjO9dZVfxl2DuP79QLAZrHQrV1rhs1aQF5Rca11q/Lt2pPMfDwfw4BrJoVw251hLsvzch3844FcDh4wCAxSPDu7JT17BZQtNwzNlZccJirayutLWldefZV83U7XrC3iwUeOYTjgxkmh3D+tZaV4Dm6/7wj7DtgJDlLMf7E1fXoFOuM5uPOBI2zfWYpS8OqLbRiSdPoT1Sr63zcnmPtEDoYDLrk2gutud82vIM9g1oNZpB8oJTBI8eA/o+iWEER2einP3J/F0Rw7Foti/KQIrr65lVvvadKQbtxx90VYLIpPP9nK8v9scFne7+xOPPnsNWRm5AHw3Tc7+c+S7wC48k+DGXvpALTW7N+bw/PP/JfSkhrvm91o1HasGHpZEjc9ORHt0Bh2g/n3LuG39TuJ69mBGcvKH44Q3a09Sx9bzocv1/5UPF/HlBy9k+MfY7vy2LkjsSrFst9/4dVf/uey/La+g5nQvTdgHmvjW7bh7Lfnkldysta6jVZzHwFWSi0GxgPZWuu+NZQbBPwAXKu1fr+ucQxDM+2hHFYvjyUuxsaQsalcelEoiQnlJ49nXznKgL5BfPBGB3buLmHaQ9mseS8OgHseyWHMBSG8tzCGkhJNYZGjUcUDsFgsTJubzPSLnuJw2lHm/vgsG1ZsInVHWlmZSQ9dyZ6f9/HEVc/TMaED0+ZO4cHRT5Ytf+DCx8k/UtVTrf0fr7nkWBtftRmLUjwy/kKSl35AVn4B7942mbU797An52hZmcXrf2LxevPOhyMSunHj0LPJKyp2q25lhqF5YkY+b7zdmugYK1eNP8zI0UHE9yzv4C6Ye5zefQKYv7A1e1LsPDEjj38va1O2fOmiE3SPt3H8uHtHVn8cF+576BgrlrUnNsbKH8ZlMm5MCL0r5Dj7lTz69Qlk2eJ27Npdyn0PH2Xlu1EAPPjoMUaPaMFb/6+dM17NeRqG5uVHc5j9Ziztom1MnZDKsFGhdOlRnt9/5h0lPjGIp1/rwIE9Jbz8aDYvvhWH1aa44+G29OwbTOFxB7demkrS8BCXulWxWBTT7ruY6fe+zeHsfOYu/AsbvttN6v7DLuW2/XyQR6a/6/K3Nm3DufzqQUz582uUlNiZ8eQVXDCyD59/etqDRutEKXUx8DJgBRZqrZ+rtLwX8AYwEHhYaz27rjHcOVZs+fJXNqx4AICuZ3VixvL7SE68h7Tf05k68G9l63kn7TXWf/hjo4spOXopR6V4augorlv9LpknClhx2Q18kZrC7twjZWVe+/VHXvvVXNfIjt2Z0ieJvJKTbtVtrJrKFIjaHoTREEuAi2sqoJSyArOA1fUN8uOWk3TvEkC3zgEEBiqunRDOitUnXMps/72EC4eHANCrRyD7D9rJyrGTX2Cw7ocikidHABAYqIhsaW1U8QASBseTnpJJ5r5s7KV2vl6+nvMmJLmU6dw7ji1f/grAwV3pRHVpR2T7llWtrtHF80dMf+TohiX4oM30i4sm9WguacfyKDUcrNq2iwt7VX+bqkvOSmDVtl31qgvwy9ZSOnex0qmzjcBAxSWXteCLz4tdyqTstjN0mNkB6x5v49BBg8M55uhgZobB118Vc82kELdz9HU73bSlhG5dbHR15nj1hBBWri50KbNzdykjhps5JvQIIPWgQVaOQX6Bg/U/nOTGyaEV4tV8aN7580liOwfQoVMAAYGKCy8NZ/0a1/wOpJQw8Dwzv87dA8lMs3M0x06b9jZ69jUf8hkSZqFzfCCHM6t/gtspCb07kJ52lMz0XOx2B19/sZ3zhvestd4pVquFoCAbFqsiKCiAI4cb9p9HZ1uYB4wFEoFJSqnESsWOAn8F6tzxPcWdY8XJE+WPqg4ODQZ9eg/g7JF9ydiTSXbq4dOW+Tum5OidHAe0jWF/fi4HC/IodTj4794djO4UX235Cd168/HeHfWq26joOv74idc6wFrrbzEPPjWZBvwfkF3fOIcy7XSMLR/Ijo2xcajSwbx/YhAfrjoOmCfGA2mlpKXb2XvATrs2Vv5yTxbnjE7llvuzOFFY80iPr+MBtI1tTU5a+f/6DqcdpW1sG5cye3/Zz/ArhwCQMCieqM7taBdnltEanls9g3kbZzHullGNLl5zybE2vmoz7cPDyMwr73xk5R8nKiKsyrLBATaGx3fh8+2761y3rEymQXSH8g5kdIyFrEzXr7579bbx+afmyefnLSWkHzLIzDDbxszH83nwoQgsdTha+bqdpmcaxFXIMTbGRnqGa45nJQay4tMiADZtKSY1zU56hsH+A3batrEy9d6jnDc6gzvvP1JrvJxMO+1iyvNrF20jp1J+3XsHsW61md+OrSfJPFR6WpmMtFJ2by+m94CannpvatsunJzs8s/+cE4+bduFn1YusW8sC5ZMYebsiXTu2haAI4cLeH/ZD7z1f9NY/tHdnDhRzE8b99UasxaDgRSt9V6tdQmwDJhQsYDWOltrvRGo93OY3TlWAAy7fDCLts/h6U/+wezkV09bPmLiMNYuW98oY0qOno8HEB0aRsaJ8jaTcaKA6JDT2wxAsNXGH+O68un+3+tct1HR5RfCufvjL94cAa6RUioW88lYCxqynir+g4aqNP96+rRWHMszGDjqAHMX5XJ23yBsNoXdrtm8rZipN0by05pOhLawMOtfxxpVvKrWb26H64Yse+4jwiNDWbD5eS6/aywpW/Zh2M0T8L3DZ3BH0nQeHjeTy+4Yw1nn925U8ZpLjg3lqTbjTu6nXJDQjS0H08krKq5z3fLltW/DbXeGkZ/n4LIxOby5pJDefQKw2mDtFydp08ZC334Bp6+kgTF9fVy4764IcnMdDB2VwYLFBfTvG4jNCnZDs3VbCVNuCOP7NTGEhChemJtfS4K1x5s8tRUFeQbJ4w7wwdJcevQJwmotL1R4wsFjt2dw1yPtCA2v/Zsodz77lF2ZXHf1XKbetJCP39/IE89cA0BYeDBDh/fk+j/NY+LlrxAcHMDIi6qd5eOuWOBghddpzr95lLv7/PqPfiQ58R4ev+Kf3PTktS7LbAE2hl6axDfvbTitXmOIKTl6Pp4z6ukxqxnyHNUpnk1Zh8grOTUK7X7dRqeJjAD78yK4OcB0rbWhqtozK1BK3QrcCtAp1nWT42JsHDxUPqpxKMNOhyjXMhHhVhbPiQbMHb774P107WSjsEib8wMHmqMfV40PY9bcmgfgfB0PICftaNnII0DbuNYcSXetV1hQxOzk+WWv39w7j8x95iDhkQzz5J2bk8/6j34kYXA829btaDTxmkuOHlCvNmNr6XqBU1b+caJblo8kREWEkV3g+vX5KeP6JrDyl531qntKdIyVzPTy0dDMDAfto1w7XGHhFp57MRIw28yF5+XQsaOVlSuK+HLNSb5ZW0xxseZ4gYMH/nqM2a/UfNGWr9tpbIyVtAo5HsqwExPtmmNEuIUFc059g6DpMySdzp1sFBVpYmOsDBpoTo+4fHwIL9bSAW4XYyMnozy/nEw7bSvlFxpu5e/Pl+c38fz9xHQ0y9hLNY/dnsGoCeH84eKaR/DLYmQX0K59+Wfftl0ERw4fdylTWFhS9vuPP+xh2v0WIlq2YMDAzmRm5JKXa04L+e7bXSSeFceXn//qVuxqVNUI6n06rdhmgimfbuPOsaKibet2ENM9mog24WXXCAwaO4CUzfvIzc5za1t8HVNy9Hw8gMwTBcSElreZmNBwsgqPV1n20m69WLG3/BxSl7qNThPpp/ttBBhIApYppfYDVwPzlVKXV1VQa/261jpJa53Uro3rSWXQgGBS9pWwL7WUkhLN8o8LuHRMqEuZ3DyDkhLzE1n4Vj7nn9uCiHAr0e1tdOxgY1eKedD+6rtCEnsG1rjRvo4HsGtjCrE9Yoju0h5bgI0R1w5jw4pNLmVCW4ZgCzBPbmOnjGTbtzsoLCgiOCSIFmHmiTw4JIhzRvdn/68HT4vhz3jNJUcPqFebsYW47p/bDmXSuXUrYiMjCLBaGHdWAmt37j1tHWFBgSR1ieOrnXvqXLeis/oHsH+/wcFUOyUlmpUrihg52vWCq/w8R1mbefedIpKGBBIWbuGBv0ewbmMUaze056V5kZw7LKjWzi/4vp2eMyCQPftK2e/M8f2PCxl3ketdI3Ir5Ljk7RMMOzeIiHALUe2txHaw8XuK+S391+tO0qtHzSPeCf2CSdtfQsbBUkpLNF/9t4DzRrnmV5BvUOqMt3JZPv0HtyA03IrWmn9Oz6JTfCB/muLe3R8Adu1MJ7Zja6JjWmKzWRgxKpEN6393KdOqdfk2JPTugMWiyM8rIjsrn959YgkKMtvT2ed0Oe3iuXpIAzpWeB0HpNd3ZRXbTADl+6c7x4oO3aPLfo8/uysBgTaXC2QvmDictcu+c3tbfB1TcvROjj8fzqBry1Z0DGtJgMXCpd16syY15bRy4QGBnBvdkc8rLHO3bmPUVKZA+G0EWGvd9dTvSqklwCda64+qr1E1m03xyjPtGTvpEIYBN0+MoE9CEAuW5gIw9cZIduwu4aa/ZmG1QO+egSx8Maqs/ssz23P9nZmUlGq6dgpg8Zyo6kL5JR6Aw3Awd9oinv3sYSxWC6vfWMuB7WmMv200AJ+8toZOveOYvvQuDMNB6vY0Xphizl2KjGrJ4x+YV69abVbWvvMdm1ZvbVTxmkuODeWpNmM4NE+v/IqFN1yJxaL4YPNvpOQc4dqkfgAs32RemT+qdzzf7zlAUam91ro1sdkUjz4VQfKfj2IYcPW1LeiREMA7b5ojx5OuD2VPip0H78nFYoX4HjaeeT6yrmmdFtPXx4UXZrbm8snZGAZcPzGUxIRAFv7bPHlOuSGcXbtLufXuI1gs0KtnAPNfKB+NeuHpViTfdcQZz8arL50+N7FyvLufaM/fbjiEwwFjr4mga88gPn7LzG/CdZGkppTwzP1ZWCzQpUcgD84yc9i26SSff1hAt4RAkscdAOCWv7Xl3AtCq40H4DA0c19czbMvTsJisbB65c8c2HeY8RMGAvDJx5v5w4jejL9iIIbhoKTYzszHPgRg5/Z01q3dyfzFyRiGgz2/Z7FqxZYa47lhI9BDKdUVOARMBCY3dKWVuXOsOP+qIYy6/o8YpQbFRSU8PfGlsvpBLQI5Z3Q/5kx9vdHGlBy9k6OhNY9u+IJ/j7kGq1K8u3sbu3OPcF3CAADe2mWeN8Z07sm3h/ZTZC+tta7wHFXb/L16r1ipd4ARQFsgC3gMCADQWi+oVHYJ5sm81ls6JfUP1j+u7uTpzW1UxnTo7+9NEB7whX7/J611Uu0lTd5qMy06dNRdptzn/oY30Ipbn/dZLIDuNve+wvekIl1ceyEP2lRc8y3KvOHpP9/o85hfrJ9R1zYzDnNqkBVYrLWeqZSaCmabUUpFA5uACMABHAcStdY1zjGJUK31EDWyvmmIZur3hYN8HjM1eXqd2oy3Bcd21J1vq9v55vfH7vNLDl4bAdZaT6pD2Zu8tR1CNBXSZoSoG631KmBVpb8tqPB7JubUCCGELzShRyH7cw6wEEIIIYQQPndGPApZCCGEEEI0Ak1kBFg6wEIIIYQQwjOkAyyEEEIIIZoLRdOZAywdYCGEEEII4RnSARZCCCGEEM1GE7oLhHSAhRBCCCGEZzSRDrDcBk0IIYQQQniGruOPG5RSFyuldimlUpRSf6+mzAil1Fal1G9KqW9qW6eMAAshhBBCCI/w9BQIpZQVmAeMBtKAjUqpFVrr7RXKRALzgYu11qlKqfa1rVdGgIUQQgghhGd4fgR4MJCitd6rtS4BlgETKpWZDHygtU4F0Fpn17ZSGQGuxZgO/f29CcIDVqf/7POY1hifhxRCCOEnPads9HnMVJ9HrEUdpjXUQSxwsMLrNGBIpTI9gQCl1NdAOPCy1vrfNa1UOsBCCCGEEMIj6jEFoq1SalOF169rrV+vuMoq6lSOYgPOAUYCLYANSqkftNa/VxdUOsBCCCGEEMIz6t4BPqy1TqpheRrQscLrOCC9ijKHtdYngBNKqW+B/kC1HWCZAyyEEEIIITxC6br9uGEj0EMp1VUpFQhMBFZUKvMxcL5SyqaUCsGcIrGjppXKCLAQQgghhPAMD88B1lrblVJ3AasBK7BYa/2bUmqqc/kCrfUOpdRnwC+AA1iotf61pvVKB1gIIYQQQjScdy6CQ2u9ClhV6W8LKr1+Hnje3XVKB1gIIYQQQjSYouor1hoj6QALIYQQQgjPkEchCyGEEEII0ficESPAn311gnsfzcEwIHlyBNOntXZZfizXIPneLPYeKCU4SLHwpSj69goCIDfP4Jb7s/ltZzFKwcKXohia1KLGeEljBnDHnJuxWC18uuhLls/6yGV5WGQo9y+6gw7doyg5WcoLyfPZ/5t5D+c3986jqOAkDsOBYTe4c3CVj7T2e8zmkKOv95vGZHh8Zx4aNwKLsvD+5l9ZuM71Bu5/GXYO4/v1AsBmsdCtXWuGzVpAXlFxrXWr8u3ak8x8PB/DgGsmhXDbnWEuy/NyHfzjgVwOHjAIDFI8O7slPXsFlC03DM2VlxwmKtrK60taV159lXz9+a5ZW8SDjxzDcMCNk0K5f1rLSvEc3H7fEfYdsBMcpJj/Ymv69Ap0xnNw5wNH2L6zFKXg1RfbMCQpqMZ4//vmBHOfyMFwwCXXRnDd7a75FeQZzHowi/QDpQQGKR78ZxTdEoLITi/lmfuzOJpjx2JRjJ8UwdU3t3LrPU0a0o077r4Ii0Xx6SdbWf6fDS7L+53diSefvYbMjDwAvvtmJ/9Z8h0AV/5pMGMvHYDWmv17c3j+mf9SWmK4Fdffajs2Db0siZuenIh2aAy7wfx7l/Db+p3E9ezAjGX3lpWL7taepY8t58OXV1UO4feYkuOZkWNj4OlHIXuL1zrASqnFwHggW2vdt4rl1wHTnS+PA7drrev8uC7D0Ex7KIfVy2OJi7ExZGwql14USmJC+cnj2VeOMqBvEB+80YGdu0uY9lA2a96LA+CeR3IYc0EI7y2MoaREU1jkqDGexWJh2txkpl/0FIfTjjL3x2fZsGITqTvSyspMeuhK9vy8jyeuep6OCR2YNncKD45+smz5Axc+Tv6RArdz9HXM5pCjr/cbd/iqzViU4pHxF5K89AOy8gt497bJrN25hz05R8vKLF7/E4vX/wTAiIRu3Dj0bPKKit2qW5lhaJ6Ykc8bb7cmOsbKVeMPM3J0EPE9yzu4C+Yep3efAOYvbM2eFDtPzMjj38valC1fuugE3eNtHD/u3pHV15+vYWjue+gYK5a1JzbGyh/GZTJuTAi9K+Q4+5U8+vUJZNniduzaXcp9Dx9l5btRADz46DFGj2jBW/+vnTNezXkahublR3OY/WYs7aJtTJ2QyrBRoXTpUZ7ff+YdJT4xiKdf68CBPSW8/Gg2L74Vh9WmuOPhtvTsG0zhcQe3XppK0vAQl7pVsVgU0+67mOn3vs3h7HzmLvwLG77bTer+wy7ltv18kEemv+vytzZtw7n86kFM+fNrlJTYmfHkFVwwsg+ff/pLjTFPUUpdDLyMeQX4Qq31c5WWK+fycUAhcJPWerNzWY3tqjbuHJu2fPkrG1Y8AEDXszoxY/l9JCfeQ9rv6Uwd+Ley9byT9hrrP/yx0cWUHM+MHBuNJtIB9uYUiCXAxTUs3wf8UWvdD3gKeL2GstX6cctJuncJoFvnAAIDFddOCGfF6hMuZbb/XsKFw0MA6NUjkP0H7WTl2MkvMFj3QxHJkyMACAxURLa01hgvYXA86SmZZO7Lxl5q5+vl6zlvguv9mzv3jmPLl+bdNw7uSieqSzsi27esanVu8XXM5pCjr/cbNy3BB22mX1w0qUdzSTuWR6nhYNW2XVzYq3u15S85K4FV23bVqy7AL1tL6dzFSqfONgIDFZdc1oIvPi92KZOy287QYWYHrHu8jUMHDQ7nmKODmRkGX39VzDWTQtzO0def76YtJXTrYqOrM8erJ4SwcnWhS5mdu0sZMdzMMaFHAKkHDbJyDPILHKz/4SQ3Tg6tEK/mQ/POn08S2zmADp0CCAhUXHhpOOvXuOZ3IKWEgeeZ+XXuHkhmmp2jOXbatLfRs28wACFhFjrHB3I4015jPICE3h1ITztKZnoudruDr7/YznnDe9Za7xSr1UJQkA2LVREUFMCRw+79Z1UpZQXmAWOBRGCSUiqxUrGxQA/nz63AqxWWLaHmdlUjd45NJ0+cLPs9ODQY9Ok9gLNH9iVjTybZqYdPW+bvmJLjmZFjo6Hr+OMnXusAa62/BaodFtJaf6+1PuZ8+QPmkz3q7FCmnY6x5QPZsTE2DlU6mPdPDOLDVccB88R4IK2UtHQ7ew/YadfGyl/uyeKc0anccn8WJwprHulpG9uanLQjZa8Ppx2lbWwblzJ7f9nP8CvNx1QnDIonqnM72sW1ceYNz62ewbyNsxh3yyi3cvR1zOaQo6/3G3f4qs20Dw8jM6+885GVf5yoiLAqywYH2Bge34XPt++uc92yMpkG0R3KO5DRMRayMl2/+u7V28bnn5ongp+3lJB+yCAzw3xPZz6ez4MPRWCpw9HK159veqZBXIUcY2NspGe45nhWYiArPi0CYNOWYlLT7KRnGOw/YKdtGytT7z3KeaMzuPP+I7XGy8m00y6mPL920TZyKuXXvXcQ61ab+e3YepLMQ6WnlclIK2X39mJ6DwiuMR5A23bh5GSXf/aHc/Jp2y78tHKJfWNZsGQKM2dPpHPXtgAcOVzA+8t+4K3/m8byj+7mxIliftq4r9aYToOBFK31Xq11CbAMmFCpzATg39r0AxCplIqB2ttVbdw5NgEMu3wwi7bP4elP/sHs5FdPWz5i4jDWLlvfKGNKjp6P56+YflfHh2D4c7pEY7kILhn4tD4Vq/jPEqrSPTimT2vFsTyDgaMOMHdRLmf3DcJmU9jtms3bipl6YyQ/relEaAsLs/517PQV1rBucxtcN2LZcx8RHhnKgs3Pc/ldY0nZsg/Dbp4M7x0+gzuSpvPwuJlcdscYzjq/d605+jpmc8jR1/uNF9S7zbjzXp9yQUI3thxMJ6+ouM51y5fXvg233RlGfp6Dy8bk8OaSQnr3CcBqg7VfnKRNGwt9+wWcvpIGxvTk5+tOvPvuiiA318HQURksWFxA/76B2KxgNzRbt5Uw5YYwvl8TQ0iI4oW5+bUkWHu8yVNbUZBnkDzuAB8szaVHnyCs1vJChSccPHZ7Bnc90o7Q8Nq/wXDns0/Zlcl1V89l6k0L+fj9jTzxzDUAhIUHM3R4T67/0zwmXv4KwcEBjLzI7dkIscDBCq/TnH+ra5l6cXefX//RjyQn3sPjV/yTm5681mWZLcDG0EuT+Oa9DafVawwxJUfPx/NXzEahiYwA+/0iOKXUBZgn8+E1lLkV82stOsW6bnJcjI2Dh8pHNQ5l2OkQ5VomItzK4jnRgLnzdR+8n66dbBQWaXN+4EBz9OOq8WHMmlvzQEFO2tGyUUeAtnGtOZLuWqewoIjZyfPLXr+5dx6Z+7IBOJJhnkhzc/JZ/9GPJAyOZ9u6Gp/W5/OYzSFHX+83nlTXNmNr6XqBU1b+caJblo/cRUWEkV3g+vU+61j3AAAgAElEQVT5KeP6JrDyl531qntKdIyVzPTy0dDMDAfto1w7XGHhFp57MRIw3+sLz8uhY0crK1cU8eWak3yztpjiYs3xAgcP/PUYs1+p+aItX3++sTFW0irkeCjDTky0a44R4RYWzDn1jYWmz5B0OneyUVSkiY2xMmigOT3i8vEhvFhLB7hdjI2cjPL8cjLttK2UX2i4lb8/X57fxPP3E9PRLGMv1Tx2ewajJoTzh4trHsEvi5FdQLv25Z9923YRHDl83KVMYWFJ2e8//rCHafdbiGjZggEDO5OZkUterjkt5Ltvd5F4Vhxffl7jg5pOqeq2opVPm+6UqTlIhTYTTPl0G3eOTRVtW7eDmO7RRLQJL7smYdDYAaRs3kdudp5b2+LrmJKj5+P5K2Zj0FQugvPrCLBSqh+wEJigtT5SXTmt9eta6yStdVK7Nq4nlUEDgknZV8K+1FJKSjTLPy7g0jGhLmVy8wxKSsxPZOFb+Zx/bgsiwq1Et7fRsYONXSnmQfur7wpJ7BlY4zbv2phCbI8Yoru0xxZgY8S1w9iwYpNLmdCWIdgCzBPN2Ckj2fbtDgoLiggOCaJFmHlSDQ4J4pzR/dn/68HTYvg7ZnPI0df7jafUp83YQlzz2nYok86tWxEbGUGA1cK4sxJYu3PvaesICwokqUscX+3cU+e6FZ3VP4D9+w0OptopKdGsXFHEyNGuF1zl5znK3ut33ykiaUggYeEWHvh7BOs2RrF2Q3temhfJucOCau38gu8/33MGBLJnXyn7nTm+/3Eh4y5yvWtEboUcl7x9gmHnBhERbiGqvZXYDjZ+TykF4Ot1J+nVo+YR74R+waTtLyHjYCmlJZqv/lvAeaNc8yvINyh1xlu5LJ/+g1sQGm5Fa80/p2fRKT6QP01x7+4PALt2phPbsTXRMS2x2SyMGJXIhvW/u5Rp1bp8GxJ6d8BiUeTnFZGdlU/vPrEEBZnt9+xzupx28VwN0oCOFV7HAen1KFOjim0mgPL9051jU4fu0WW/x5/dlYBAm8sFuRdMHM7aZd+5vS2+jik5nhk5NhoyAlwzpVQn4APgeq3177WVr47NpnjlmfaMnXQIw4CbJ0bQJyGIBUtzAZh6YyQ7dpdw01+zsFqgd89AFr4YVVb/5Zntuf7OTEpKNV07BbB4TlR1oQBwGA7mTlvEs589jMVqYfUbazmwPY3xt40G4JPX1tCpdxzTl96FYThI3Z7GC1PMOT2RUS15/APzqk6rzcrad75j0+qttebo65jNIUdf7zee4Kk2Yzg0T6/8ioU3XInFovhg82+k5Bzh2qR+ACzfZF6ZP6p3PN/vOUBRqb3WujWx2RSPPhVB8p+PYhhw9bUt6JEQwDtvmiPHk64PZU+KnQfvycVihfgeNp55PrK+6ZXF9OXna7MpXpjZmssnZ2MYcP3EUBITAln4b/NENuWGcHbtLuXWu49gsUCvngHMf6F8ZOiFp1uRfNcRZzwbr750+jzByvHufqI9f7vhEA4HjL0mgq49g/j4LTO/CddFkppSwjP3Z2GxQJcegTw4y8xh26aTfP5hAd0SAkkedwCAW/7WlnMvCK02HoDD0Mx9cTXPvjgJi8XC6pU/c2DfYcZPGAjAJx9v5g8jejP+ioEYhoOSYjszH/sQgJ3b01m3difzFydjGA72/J7FqhVbaoxXwUagh1KqK3AImAhMrlRmBXCXUmoZMATI01pnuBugJu4cm86/agijrv8jRqlBcVEJT098qax+UItAzhndjzlT3b9m1dcxJcczI8fGoqmMAKva5u/Ve8VKvQOMANoCWcBjQACYz29WSi0ErgIOOKvYtdZJVazKRVL/YP3j6k5e2eaqjOnQ32exhPesTq/z3cIazBqz+yd39ulTvNVmWnToqLtMua+OW19/K251+1HsHtHd5t5X+J5UpItrL+RBm4prvkWZNzz95xt9HvOL9TOqbDNKqXHAHMzboC3WWs9USk2FsrahgLmYd3soBG7WWm9y1j2tXWmtF9W0HRGqtR6iRnouMSG85Av9fp3OM94W0q6j7nVV3c43W167zy85eG0EWGs9qZblU4Ap3oovRFMjbUaIqmmtVwGrKv1tQYXfNXBnNXVrbFdCCA9rIiPAfr8ITgghhBBCNH2KpjMFQjrAQgghhBDCM6QDLIQQQgghmhPlpWvLPE06wEIIIYQQouH8fGuzupAOsBBCCCGE8AiZAyyEEEIIIZqXJtIB9uuT4IQQQgghhPA1GQEWQgghhBAeIVMghBBCCCFE8yIdYO/4/ZcQeTyxEMKvChylPo0XbvHDGeX7rb6PKYRo2rSMAAshhBBCiOZGOsBCCCGEEKK5kEchCyGEEEKI5keeBCeEEEIIIZoTGQEWQgghhBDNhzwKWQghhBBCNDfK4e8tcI90gIUQQgghhGfICLAQQgghhGhOZA6wDyWNGcAdc27GYrXw6aIvWT7rI5flYZGh3L/oDjp0j6LkZCkvJM9n/28HAXhz7zyKCk7iMBwYdoM7B/+90cWTHL0T87OvTnDvozkYBiRPjmD6tNYuy4/lGiTfm8XeA6UEBykWvhRF315BAOTmGdxyfza/7SxGKVj4UhRDk1q4lWdjMDy+Mw+NG4FFWXh/868sXLfRZflfhp3D+H69ALBZLHRr15phsxaQV1Rca92qfLv2JDMfz8cw4JpJIdx2Z5jL8rxcB/94IJeDBwwCgxTPzm5Jz14BZcsNQ3PlJYeJirby+pLWlVdfJV9/vl+tPcmjj5k5Tp4UwrS7XHPMzXVw7/25HDhgEBSkeOmFlvRy5jjo3GzCQhVWK1htitWr2taa3/dfFzH7iVwMAy6fGMrNd0S4LM/Pc/DE346SdsBOUJDi0edbEZ8QSPFJzS1/yqakRGPYNSPHhTD1vpa1xoPa22i/Pyby5EfTydyXDcB3H/6P/zz1vlt1G7Patn3oZUnc9OREtENj2A3m37uE39bvJK5nB2Ysu7esXHS39ix9bDkfvryq0cWUHM+MHP1OI3eBUEotBsYD2VrrvlUsV8DLwDigELhJa725rnEsFgvT5iYz/aKnOJx2lLk/PsuGFZtI3ZFWVmbSQ1ey5+d9PHHV83RM6MC0uVN4cPSTZcsfuPBx8o8UNMp4kqN3YhqGZtpDOaxeHktcjI0hY1O59KJQEhOCyso8+8pRBvQN4oM3OrBzdwnTHspmzXtxANzzSA5jLgjhvYUxlJRoCosaPunJZ21GKR4ZfyHJSz8gK7+Ad2+bzNqde9iTc7SszOL1P7F4/U8AjEjoxo1DzyavqNitupUZhuaJGfm88XZromOsXDX+MCNHBxHfs7yDu2DucXr3CWD+wtbsSbHzxIw8/r2sTdnypYtO0D3exvHj7h1Yff35GobmoRn5LH+7NTExVsZecpiLLgoioUKOr/zrOH37BPDGotbsTrHz0MN5vLe8PMf332tDm9YWt/N77pFjzH+rPVHRVq6/LIs/jmpBtwrxFs/NJyExgBdeb8u+lFJmPXKMBe+0JzAIFrzTjpBQC6WlmuSrsxk2IpizBgbVENG9Ngqwbd0OHrnsuXrVBSKUUrsAK7BQa+2yopragFLqYucyl7pKqWuAx4HewGCt9aZa3+A6bvuWL39lw4oHAOh6VidmLL+P5MR7SPs9nakD/1a2nnfSXmP9hz82upiS45mRY2PRVEaA3Tva1s8S4OIalo8Fejh/bgVerU+QhMHxpKdkkrkvG3upna+Xr+e8CUkuZTr3jmPLl78CcHBXOlFd2hHZ3r0RD3/H80fM5pDjj1tO0r1LAN06BxAYqLh2QjgrVp9wKbP99xIuHB4CQK8egew/aCcrx05+gcG6H4pInmyOuAUGKiJbWuu1HZUswQdtpl9cNKlHc0k7lkep4WDVtl1c2Kt7teUvOSuBVdt21asuwC9bS+ncxUqnzjYCAxWXXNaCLz4vdimTstvO0GFmB6x7vI1DBw0O5xgAZGYYfP1VMddMCnE7R19/vlu2ltKli5XOzhwnTGjB6ko5/r7bzvDhZo494m0cTDPIceZYV79tLaFjlwDiOtkICFRcdGkIX68pcimzd3cpg4YFA9A1PoD0NDtHcgyUUoSEmod+u11jL9Xm3etr4U4bbUhdbY4adcLczxOBSUqpxEqrqrINKKWswLxq6v4KXAl869bG1mPbT544WfZ7cGhwlSNgZ4/sS8aeTLJTDze6mJLjmZFjo6Hr+OMnXusAa62/BaofFoIJwL+16QcgUikVU9c4bWNbk5N2pOz14bSjtI1t41Jm7y/7GX7lEAASBsUT1bkd7eLaOLcTnls9g3kbZzHullGNLp7k6J2YhzLtdIwt/wIkNsbGoUy7S5n+iUF8uOo4YHaoDqSVkpZuZ+8BO+3aWPnLPVmcMzqVW+7P4kRhw0eAfdVm2oeHkZlXPlKelX+cqIiwKssGB9gYHt+Fz7fvrnPdsjKZBtEdyjuQ0TEWsjJdO369etv4/FPzRPDzlhLSDxlkZpjv6czH83nwoQgsdTha+frzzcwwiI0pzzEm2kJmhmuOiYk2Vjlz3LKlhLQ0g3RnjkrBxMlHuGhsDm/+p7DW/LIzDaIqxIuKsZJT6T3tmRjA2k/Ndf26tZjMQwbZzjKGoZk0NpPRA9M59/xgzjq75tFfcK+NAiQO7cmCLc8zc+VDdE6Mc7tunrnrF2ut92qtS4BlmPt8RdW1gcFASlV1tdY7tNa7ak2wgXkPu3wwi7bP4elP/sHs5NP/bzpi4jDWLlvfKGNKjp6P56+Y/nbqSXB1+fEXb44A1yYWOFjhdZrzb3Wiqhi50JX+B7XsuY8IjwxlwebnufyusaRs2YdhN08E9w6fwR1J03l43Ewuu2MMZ53fu1HFkxy9E7OqKUqVt2H6tFYcyzMYOOoAcxflcnbfIGw2hd2u2bytmKk3RvLTmk6EtrAw61/Has3RA3zWZk65IKEbWw6mk1dUXOe65ctr34bb7gwjP8/BZWNyeHNJIb37BGC1wdovTtKmjYW+/QJOX0kDY3ry863qHagcb9qdYeTlORh1UQ6L3iikb98AbM4++ooP27Dms3a8/WZrliw9wYYfik9fYR3j3XR7BPn5DiaNzWT5kuMk9AnA6uwzW62Kdz6N5tMfOvDr1hJSdpXUGK+q9cPpn33K5n1c1+UOpp79Nz6e+ylPfPig23WLKQKouCFV7d/VtQGPtI2quLvPr//oR5IT7+HxK/7JTU9e67LMFmBj6KVJfPPehkYZU3L0fDx/xfQ7rev+4yf+vAiuqi/dqnwnlFK3Yn7dRTCuX4PmpB0tGwUEaBvXmiPproNohQVFzE6eX/b6zb3zyi7SOJJhnthyc/JZ/9GPJAyOZ9u6HdVutK/jSY7eiRkXY+PgofIRwUMZdjpEuTaHiHAri+dEA+ZBq/vg/XTtZKOwSJvzSgeaXy9fNT6MWXNrGrj1mHq1GVvLVi7LsvKPE90yvOx1VEQY2QWu0wNOGdc3gZW/7KxX3VOiY6xkppePTmZmOGgf5TqlICzcwnMvRpoJac2F5+XQsaOVlSuK+HLNSb5ZW0xxseZ4gYMH/nqM2a+45lSZrz/fmBgrhyqM+GZkOoiKds0xPNzCnAo5Dh6aQ6eOZploZ9m2ba2MvTiYrVtLGXpu9aOyUdFWsirEy8owaFvFe/r47FPfkGguHZ5Bh46u70F4SwtJQ4P4/uuTxCcE1piju230lB8/3cK0eVOIaBPuVt1qVN6/q2sDbreN6lR3nqnrtm9bt4OY7tFEtAkvuyZh0NgBpGzeR252nlvb4uuYkqPn4/kr5pmqujn+FZaPAD4G9jn/9IHW+klq4M8R4DSgY4XXcUB6VQW11q9rrZO01kkBuJ4Udm1MIbZHDNFd2mMLsDHi2mFsWOF6jUNoyxBsAeaBf+yUkWz7dgeFBUUEhwTRIsw8yQWHBHHO6P7s//UgNfF1PMnROzEHDQgmZV8J+1JLKSnRLP+4gEvHhLqUyc0zKCkxz6EL38rn/HNbEBFuJbq9jY4dbOxKMQervvqukMSeNXcePKRebcYW4prXtkOZdG7ditjICAKsFsadlcDanXtPW0dYUCBJXeL4aueeOtet6Kz+Aezfb3Aw1U5JiWbliiJGjnZtx/l5jrL3+t13ikgaEkhYuIUH/h7Buo1RrN3QnpfmRXLusKBaO7/g+893QP8A9u0zSHXm+PHHRYyplGNehRzferuIc4cEEh5uobDQwfHj5lSIwkIH33xbTEJCzWMTif0DObivlEOpdkpLNJ//t5A/jna9S0VBnoNSZ7wPl51g4OAgwsItHDtiUJBnxjt50sH/vjtJl/jaR9jdaaOtoiLLfk8YFI/FYiH/SIFbdYNoAVDxja5q/66uDbjdNqpT3XnGnW3v0D267Pf4s7sSEGhzuSD3gonDWbvsO7e3xdcxJcczI8fGwtNTIGqZ41/ROq31AOdPjZ1f8O8I8ArgLqXUMmAIkKe1zqjrShyGg7nTFvHsZw9jsVpY/cZaDmxPY/xtowH45LU1dOodx/Sld2EYDlK3p/HCFHOOTWRUSx7/wLzK0mqzsvad79i0emujiic5eiemzaZ45Zn2jJ10CMOAmydG0CchiAVLcwGYemMkO3aXcNNfs7BaoHfPQBa+GFVW/+WZ7bn+zkxKSjVdOwWweE5UdaE8ySNtxnBonl75FQtvuBKLRfHB5t9IyTnCtUn9AFi+6RcARvWO5/s9BygqtddatyY2m+LRpyJI/vNRDAOuvrYFPRICeOdNc+R40vWh7Emx8+A9uVisEN/DxjPPR9a4ztr4+vO12RTPPBXBpOuOYjhg4rUtSEgIYKkzxxuvD2V3ip2/3m3m2LOHjRdnmznm5Dj4yxTzGwy7AVdcHsyFFwTXGu/BJ1tx1w05GIZmwp/C6N4zgPf/Y85pvvrPYexLKeXR+45isUK3+AAefd68DdzhbIPH7jO3Uzs0o8aH8IeRtd/Cz502+oerz2X81Isw7AYlRSXMnPRSjXUriqAVQLBSqitwCJgITK60GVW2AaVUDtCjlrr14k7e5181hFHX/xGj1KC4qISnJ75UVj+oRSDnjO7HnKmvN9qYkuOZkWOj4flZDWVz/AGc7X8CsL0hK1W1zd+r94qVegcYAbQFsoDHgAAArfUC5+1s5mJe9V4I3OzO7WkiVGs9RI30yjaLM9fq9J99HtMas/snrbV7l8njvTbTokNH3WXKfXVPoJ5W3Pq8z2IBdLfVfBGeN2Qbx30aL93w/VjF9C5DfB7zC/1+Cubp0wos1lrPVEpNhdrbgFJqHDCnYl3n368A/gW0A3KBrVrrMTVth5xnRFPxhX6/TucZbwuPjNMDz7+7TnW+/eTBGnNQSl0NXKy1nuJ8fT0wRGt9V4UyI4D/w/w2KB14QGv9W01xvXZU1VpPqmW5Bu70VnwhmhppM0KQV/lEqLVeUOH3atuA1noVcNpTArTWHwIfeng7hRBV0YCjzgOrbZVSFQdzXtdaVxz2dmeO/2ags9b6uPM/wx9h3i6xWmfEk+CEEEIIIUQjUPeJBYdrGcWudY6/1jq/wu+rlFLzlVJttdbV3jzZnxfBCSGEEEKIM4gX7gO8Eeccf6VUIOYc/xUuMZWKdk6RQik1GLN/W+MFKjICLIQQQgghPMPD15Zpre1KqbuA1ZTP8f+t4vUBwNXA7UopO1AETNS1XOQmHWAhhBBCCOER3ni6W1Vz/CtdHzAX8wJZt0kHWAghhBBCNJzGG7dB8wrpAAshhBBCiAZTgPLj443rQjrAQgghhBDCMxz+3gD3SAdYCCGEEEJ4hIwACyGEEEKI5qMJzQH22qOQvcX5zPcD9ajaFqj2hshe4uuYkmPjitlZa93O0xtTV9JmGlU8f8RsSvGkzTT+mGd6PH/EbPJt5pSI8Fg96Jy6PbD0q28e9svjnJvcCHB9P2il1CZfv8G+jik5njkxPUnaTOOJ54+YZ3o8b5A203zj+SPmmdBmKvLGbdC8ocl1gIUQQgghRCPVRGYWyKOQhRBCCCFEs9KcRoBfbwYxJcczJ2Zj0Bzea8mx6cdrTGR/avrx/BHzzGkzGlQTuQ1ak7sITgghhBBCND4RYbF6SP/b61Tni+8fkYvghBBCCCFEE9ZExlXPuDnASqnFSqlspdSv1SxXSqlXlFIpSqlflFIDvRzvOmecX5RS3yul+nszXoVyg5RShlLq6obEczemUmqEUmqrUuo3pdQ33oynlGqplPqvUupnZ7ybGxivo1JqrVJqh3N9d1dRxqP7ja8ppS5WSu1ybv/fq1hebX7V1VVKXeN8vxxKqRr/997A+G7t8w2M30sptUEpVayUeqC+cSqsz+vHoapiKKVaK6XWKKV2O/9tVU3dGt+P+sZQSv3Duc5dSqkx1azTrW30t4bsd0qpc5RS25zvxStKKeX8+0vO4+RWpdTvSqlcb8ZzLvuTUmq7s62+7YMcb1JK5VTI8yUvHHuq3IeUUm2UeSw/rpSaW9M6Ghi/yRz7/EFpXacffznjOsDAEuDiGpaPBXo4f24FXvVyvH3AH7XW/YCnaPhcn9rioZSyArOA1Q2M5VZMpVQkMB+4TGvdB7jGm/GAO4HtWuv+wAjgBaVUYAPi2YH7tda9gXOBO5VSiZXKeHq/8Rnn/jAPM4dEYJK7+dVS91fgSuBbb8V3WkIt+7wH4h8F/grMrm+cSpbg/eNQVTH+Dnypte4BfOl87cLN96POMZzrmAj0cdaZ74xVWa3b2Egsof773auYn+upz/hiAK31vVrrAVrrAcC/gA+8GU8p1QP4BzDMeWy+p1I9j8d0Wu7M8RzgMjx/7KluHzoJPAI84MY6GhK/SRz7/Ebruv34yRnXAdZaf4t5MqvOBODf2vQDEKmUivFWPK3191rrY86XPwBx9Y3lTjynacD/AdkNiVWHmJOBD7TWqc7yDYrrRjwNhDtHHMKcZe0NiJehtd7s/L0A2AHEVirm0f3GxwYDKVrrvVrrEmAZZj4VVZdftXW11ju01ru8HN/dfb5B8bXW2VrrjUBpA+JUXJ/Xj0PVxJgALHX+vhS4vIqq7nwe9YkxAVimtS7WWu8DUpyxKnNnG/2uqtyVUt2VUp8ppX5SSq1TSvWqXM/5OUZorTdo8yKbf1N1jpOAd7wc7xZg3qlzUOVjsw9y9Mqxh2r2Ia31Ca31d5gdYa/Fb0LHPt/TgKOOP35yxnWA3RALHKzwOo3TOzvekgx86s0ASqlY4ApggTfjVNITaKWU+tp50LzBy/HmAr2BdGAbcLfW2iPNSCnVBTgb+F+lRf7cbxrKnW2vrown8m5IfE9ojJ+dt7YpSmudAeZ/7ID2XohdXQx31+vONjZWrwPTtNbnYI4yzq+iTCxm7qec9j4opToDXYGvvByvJ9BTKbVeKfWDUsqd0URP5HiVUuoX4EVcO3CeOva4uw8192OfzynqNv3Bn1MgmuNFcKqKv3n9E1BKXYDZAR7u5VBzgOlaa0OpqlL1ChvmV10jgRbABqXUD1rr370UbwywFbgQ6A6sUUqt01rnN2SlSqkwzJHze6pYl1/2Gw9xZ9urK+OJvBsS3xMa42fnz23yVuzG+D57jPP4cB7wXoVja1BVRav4W+X3YSLwvtba8HI8G+ZX6yMwv31cp5Tqq7XOraKOp2L+F3hHa12slHodGF9NudrW5e9jj7/jN11N5O5izbEDnAZ0rPA6DnMk0WuUUv2AhcBYrfURb8YCkoBlzoNXW2CcUsqutf7IizHTgMNa6xPACaXUt0B/wFsd4JuB55xfvaUopfYBvYAf67tCpVQAZuf3La31B1UU8fl+40HubHt1ZQLdqOvN+J7QGD87b21TllIqRmud4fwatarpSA2NXV0Md9frzjY2RhYgV5tzW8s453n+5Hy5AnMOZ8WpblW9DxMxr2Xwdrw04AetdSmwTym1C7NDvNFbMSud45ZiHq+r2rZT6nPscXcfau7HPv9oIh3g5jgFYgVwg/PKy3OBvFNfpXiDUqoT5oUO13txRLSM1rqr1rqL1roL8D5wh5c7vwAfA+crpWxKqRBgCOY8Wm9JxRxtRikVBSQAe+u7Mudc4kXADq31i9UU8+l+42EbgR5Kqa7OiwUnYuZTUXX5uVPXm/E9wRM5eJq38l0B3Oj8/UbMtllZQ9+P6mKsACYqpYKUUl0xO1pV/afUnW1sdJzfCu1TSl0DZVfv99daG9p5YZvW+lHn51iglDrXeWy5gQo5KqUSgFbABh/E+wi4wFm/LeaUiGqPlZ6IqVznskcDhheOPe7uQ8392Od7TWgO8Bk3AqyUegfz6562Sqk04DEgAEBrvQBYBYzDvECjENf/nXoj3qNAG8wrogHsugE3fHYjnsfVFlNrvUMp9RnwC+buvFBr3ZBbVtWW41PAEqXUNsyvj6ZrrQ/XNx4wDLge2KaU2ur820NApwoxPbrf+JLW2q6UugvzriBWYLHW+jel1FTn8mrzq64ugFLqCswr2dsBK5VSW7XWp936qiHxnXFO2x+01os8mb9SKhrYBEQADqXUPUBifafV+OI4VE2M54B3lVLJmP9RPNWR6YDZLsfV9Jk2JIbzPX0X2I55Ueqdp77iV0otBBZorTdVV7+xqSb364BXlVIzMD/PZcDPVVS/HfMK/haY131UvPZjEubFgi7DZF6Ktxq4SCm1HTCAv1UcofVSzL8qpS7D3AdO3V3Fo8ceatiHlFL7MdtxIObFcU95On5TOfb5iz/n9daFPAlOCCGEEEI0WMuQDnpoj+Q61Vn9y9PyJDghhBBCCNFU+ffevnUhHWAhhBBCCNFwGukACyGEEEKIZsaPF7bVhXSAhRBCCCGERzSVi+Ca423QhBBCCCFEMyYjwEIIIYQQwjOayAiwdICFEEIIIUTDacAhHWDhA0qpRzBvXH4QOIz5uMo84FbMG4GnYD6FrlAptQQownxscGfMG27fCAwF/qe1vsm5zuPAPGAUcAzzoRD/xEahGp4AAAQhSURBVHwwxD1a6xVKqS7Am0Coc1Pu0lp/791shWg4aTNC1I20GeG+pnMbNJkD3IQppZKAq4CzgSuBUzeS/kBrPUhr3R/zkcQV70rdCrgQuBf4L/AS0Ac4Syl16vnvocDXWutzgALgaWA0cAXwpLNMNjBaaz0QuBZ4xStJCuFB0maEqBtpM6LOtK7bj5/ICHDTNhz4WGtdBKCU+q/z732VUk8DkUAY5mMYT/mv1lo7HyOcpbXe5qz7G9AF2AqUAJ85y28DirXWpc46XZx/DwDmOg9mBuYz5oVo7KTNCFE30mZE3TSREWDpADdtqpq/LwEu11r/rJS6CfNZ4qcUO/91VPj91OtT+0NphefUl5XTWjuUUqfK3AtkAf0xv0k4We8shPAdaTNC1I20GeG+JjQHWKZANG3fAZcqpYKVUmHAJc6/hwMZSqkAzHlb3tASyNBaO4DrAauX4gjhSdJmhKgbaTOiDjRoR91+/ERGgJswrfVGpdQK4GfgALAJ88KER4D/Of+2DfNA5Wnzgf9TSl0DrAVOeCGGEB4lbUaIupE2I+qsiUyBULqJbKiomlIqTGt9XCkVAnwL3Kq13uzv7RKisZI2I0TdSJsR7moZGKXPi55UpzqfHXz5J611Uu0lPUtGgJu+15VSiUAwsFQOSkLUStqMEHUjbUa4r4kMrEoHuInTWk/29zYI0ZRImxGibqTNiDppIh1guQhOCCGEEEJ4QB3vAexmZ1kpdbFSapdSKkUp9fcayg1SShlKqatrW6eMAAshhBBCiIbTgMOzd3ZQSlkxnxo4GkgDNiqlVmitt1dRbhau96SulowACyGEEEIIz/D8CPBgIEVrvVdrXQIsAyZUUW4a8H+YTxCslXSAhRBCCCGEZ3i+AxwLHKzwOs35tzJKqVjMx2gvcHczZQqEEEIIIYTwAF2fJ8G1VUptqvD6da316xVeV/U0wspB5gDTtdaGUtU9vNCVdICFEEIIIUTDadB1f7rb4VruA5wGdKzwOg5Ir1QmCVjm7Py2BcYppexa64+qW6l0gIUQQgghRGO1EeihlOoKHAImAi635tNadz31u1JqCfBJTZ1fkA6wEEIIIYTwlLpPgaiR1tqulLoL8+4OVmCx1vo3pdRU53K35/1WJB1gIYQQQgjx/9u7gxOEgSAMoxNrsCjLsMpgUfbwexeRhGyMYd47BrLs8WMOO2PssAgjyVxV89u3j+Gb5L7kTAEMAMB2yfB3gPcigAEAGOMkq5AFMAAAQ8QEGACAPhYvtzicAAYAYLvU8Fcg9iKAAQAYY/0ijEMIYAAANktVxQQYAIA2EhNgAAB6MQEGAKCXk0yAp5zkuQoAAP7XNE2Pqrqu/O2Z5LbHfb4RwAAAtHI5+gIAAPBLAhgAgFYEMAAArQhgAABaEcAAALTyAu34IfQcKThJAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 936x360 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,axes = plt.subplots(1,3,figsize=(13,5))\n",
    "\n",
    "param_grid_linear = {'C':np.linspace(1,2,6),'gamma':np.linspace(1,2,6)}\n",
    "\n",
    "param_grid_one_log = {'C':np.linspace(1,2,6),'gamma':np.logspace(-3,2,6)}\n",
    "\n",
    "param_grid_range = {'C':np.logspace(-3,2,6),'gamma':np.logspace(-7,-2,6)}\n",
    "\n",
    "for param_grid,ax in zip([param_grid_linear,param_grid_one_log,param_grid_range],axes):\n",
    "    grid_search = GridSearchCV(SVC(),param_grid,cv=5)\n",
    "    grid_search.fit(X_train,y_train)\n",
    "    scores = grid_search.cv_results_['mean_test_score'].reshape(6,6)\n",
    "    \n",
    "    # 对交叉验证平均数分数作图\n",
    "    scores_image = mglearn.tools.heatmap(scores,xlabel='gamma',xticklabels=param_grid['gamma'],\n",
    "                                         ylabel='C',yticklabels=param_grid['C'],cmap='viridis',ax=ax)\n",
    "plt.colorbar(scores_image,ax=axes.tolist())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 在非网格的空间中搜索\n",
    "<P>GridSearchCV的param_grid可以是字典组成的列表,列表中的每个字典可以扩展成一个独立的网格。包含内核与参数的网络搜索可能如下如所示</P>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "List of grids:\n",
      "[{'kernel': ['rbf'], 'C': [0.001, 0.01, 0.1, 1, 10, 100], 'gamma': [0.001, 0.01, 0.1, 1, 10, 100]}, {'kernel': ['linear'], 'C': [0.001, 0.01, 0.1, 1, 10, 100]}]\n"
     ]
    }
   ],
   "source": [
    "param_grid =[{'kernel':['rbf'],\n",
    "               'C':[0.001,0.01,0.1,1,10,100],\n",
    "               'gamma':[0.001,0.01,0.1,1,10,100]\n",
    "             },\n",
    "             {'kernel':['linear'],\n",
    "              'C':[0.001,0.01,0.1,1,10,100]\n",
    "             }\n",
    "            ]\n",
    "print(\"List of grids:\\n{}\".format(param_grid))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "最好参数:{'C': 10, 'gamma': 0.1, 'kernel': 'rbf'}\n",
      "最好交叉验证集的精度:0.9731225296442687\n"
     ]
    }
   ],
   "source": [
    "grid_search=GridSearchCV(SVC(),param_grid,cv=5)\n",
    "grid_search.fit(X_train,y_train)\n",
    "print(\"最好参数:{}\".format(grid_search.best_params_))\n",
    "print(\"最好交叉验证集的精度:{}\".format(grid_search.best_score_))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>0</th>\n",
       "      <th>1</th>\n",
       "      <th>2</th>\n",
       "      <th>3</th>\n",
       "      <th>4</th>\n",
       "      <th>5</th>\n",
       "      <th>6</th>\n",
       "      <th>7</th>\n",
       "      <th>8</th>\n",
       "      <th>9</th>\n",
       "      <th>...</th>\n",
       "      <th>32</th>\n",
       "      <th>33</th>\n",
       "      <th>34</th>\n",
       "      <th>35</th>\n",
       "      <th>36</th>\n",
       "      <th>37</th>\n",
       "      <th>38</th>\n",
       "      <th>39</th>\n",
       "      <th>40</th>\n",
       "      <th>41</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>mean_fit_time</th>\n",
       "      <td>0.00139937</td>\n",
       "      <td>0.00100017</td>\n",
       "      <td>0.00119972</td>\n",
       "      <td>0.000799417</td>\n",
       "      <td>0.000799942</td>\n",
       "      <td>0.00119982</td>\n",
       "      <td>0.0010006</td>\n",
       "      <td>0.000800037</td>\n",
       "      <td>0.0006001</td>\n",
       "      <td>0.000600195</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000798798</td>\n",
       "      <td>0.000789595</td>\n",
       "      <td>0.000999355</td>\n",
       "      <td>0.000998974</td>\n",
       "      <td>0.0212</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00019083</td>\n",
       "      <td>0.000594854</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000207949</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std_fit_time</th>\n",
       "      <td>0.00101956</td>\n",
       "      <td>1.01152e-06</td>\n",
       "      <td>0.000400188</td>\n",
       "      <td>0.00039971</td>\n",
       "      <td>0.000399971</td>\n",
       "      <td>0.000399304</td>\n",
       "      <td>1.61281e-06</td>\n",
       "      <td>0.000400019</td>\n",
       "      <td>0.00048998</td>\n",
       "      <td>0.000490057</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000399402</td>\n",
       "      <td>0.000731234</td>\n",
       "      <td>8.86968e-07</td>\n",
       "      <td>2.40318e-06</td>\n",
       "      <td>0.0409019</td>\n",
       "      <td>0</td>\n",
       "      <td>0.00038166</td>\n",
       "      <td>0.00048617</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000415897</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean_score_time</th>\n",
       "      <td>0.000400925</td>\n",
       "      <td>0.00040226</td>\n",
       "      <td>0.000800276</td>\n",
       "      <td>0.0006001</td>\n",
       "      <td>0.00019989</td>\n",
       "      <td>0.000600052</td>\n",
       "      <td>0.000199938</td>\n",
       "      <td>0.000199795</td>\n",
       "      <td>0.000399733</td>\n",
       "      <td>0.000399828</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000200224</td>\n",
       "      <td>0.000200224</td>\n",
       "      <td>0.000400305</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000399923</td>\n",
       "      <td>0.000805521</td>\n",
       "      <td>0.000605631</td>\n",
       "      <td>0.000399399</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000190353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std_score_time</th>\n",
       "      <td>0.000491032</td>\n",
       "      <td>0.000492691</td>\n",
       "      <td>0.00040014</td>\n",
       "      <td>0.000489981</td>\n",
       "      <td>0.00039978</td>\n",
       "      <td>0.000489941</td>\n",
       "      <td>0.000399876</td>\n",
       "      <td>0.00039959</td>\n",
       "      <td>0.00048957</td>\n",
       "      <td>0.000489687</td>\n",
       "      <td>...</td>\n",
       "      <td>0.000400448</td>\n",
       "      <td>0.000400448</td>\n",
       "      <td>0.000490273</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000489804</td>\n",
       "      <td>0.000402923</td>\n",
       "      <td>0.000494599</td>\n",
       "      <td>0.000489162</td>\n",
       "      <td>0</td>\n",
       "      <td>0.000380707</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>param_C</th>\n",
       "      <td>0.001</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.01</td>\n",
       "      <td>...</td>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "      <td>100</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>100</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>param_gamma</th>\n",
       "      <td>0.001</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>100</td>\n",
       "      <td>0.001</td>\n",
       "      <td>0.01</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1</td>\n",
       "      <td>...</td>\n",
       "      <td>0.1</td>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>100</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>param_kernel</th>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>...</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>rbf</td>\n",
       "      <td>linear</td>\n",
       "      <td>linear</td>\n",
       "      <td>linear</td>\n",
       "      <td>linear</td>\n",
       "      <td>linear</td>\n",
       "      <td>linear</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>params</th>\n",
       "      <td>{'C': 0.001, 'gamma': 0.001, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.001, 'gamma': 0.01, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.001, 'gamma': 0.1, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.001, 'gamma': 1, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.001, 'gamma': 10, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.001, 'gamma': 100, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.01, 'gamma': 0.001, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.01, 'gamma': 0.01, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.01, 'gamma': 0.1, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.01, 'gamma': 1, 'kernel': 'rbf'}</td>\n",
       "      <td>...</td>\n",
       "      <td>{'C': 100, 'gamma': 0.1, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 100, 'gamma': 1, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 100, 'gamma': 10, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 100, 'gamma': 100, 'kernel': 'rbf'}</td>\n",
       "      <td>{'C': 0.001, 'kernel': 'linear'}</td>\n",
       "      <td>{'C': 0.01, 'kernel': 'linear'}</td>\n",
       "      <td>{'C': 0.1, 'kernel': 'linear'}</td>\n",
       "      <td>{'C': 1, 'kernel': 'linear'}</td>\n",
       "      <td>{'C': 10, 'kernel': 'linear'}</td>\n",
       "      <td>{'C': 100, 'kernel': 'linear'}</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>split0_test_score</th>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0.956522</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.521739</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.956522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>split1_test_score</th>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>...</td>\n",
       "      <td>0.956522</td>\n",
       "      <td>0.956522</td>\n",
       "      <td>0.913043</td>\n",
       "      <td>0.521739</td>\n",
       "      <td>0.347826</td>\n",
       "      <td>0.869565</td>\n",
       "      <td>0.913043</td>\n",
       "      <td>0.956522</td>\n",
       "      <td>1</td>\n",
       "      <td>0.956522</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>split2_test_score</th>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.590909</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.772727</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>split3_test_score</th>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>...</td>\n",
       "      <td>0.863636</td>\n",
       "      <td>0.863636</td>\n",
       "      <td>0.818182</td>\n",
       "      <td>0.590909</td>\n",
       "      <td>0.363636</td>\n",
       "      <td>0.772727</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.909091</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>split4_test_score</th>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>...</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.681818</td>\n",
       "      <td>0.409091</td>\n",
       "      <td>0.909091</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.954545</td>\n",
       "      <td>0.954545</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean_test_score</th>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>...</td>\n",
       "      <td>0.954941</td>\n",
       "      <td>0.946245</td>\n",
       "      <td>0.911067</td>\n",
       "      <td>0.581423</td>\n",
       "      <td>0.366403</td>\n",
       "      <td>0.838735</td>\n",
       "      <td>0.955336</td>\n",
       "      <td>0.973123</td>\n",
       "      <td>0.972727</td>\n",
       "      <td>0.955336</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std_test_score</th>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>...</td>\n",
       "      <td>0.0497992</td>\n",
       "      <td>0.0447077</td>\n",
       "      <td>0.0634877</td>\n",
       "      <td>0.0589635</td>\n",
       "      <td>0.0224845</td>\n",
       "      <td>0.0557943</td>\n",
       "      <td>0.0397936</td>\n",
       "      <td>0.0219572</td>\n",
       "      <td>0.0363636</td>\n",
       "      <td>0.0287643</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>rank_test_score</th>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>27</td>\n",
       "      <td>...</td>\n",
       "      <td>11</td>\n",
       "      <td>13</td>\n",
       "      <td>18</td>\n",
       "      <td>24</td>\n",
       "      <td>27</td>\n",
       "      <td>21</td>\n",
       "      <td>8</td>\n",
       "      <td>1</td>\n",
       "      <td>3</td>\n",
       "      <td>8</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>16 rows × 42 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                              0   \\\n",
       "mean_fit_time                                         0.00139937   \n",
       "std_fit_time                                          0.00101956   \n",
       "mean_score_time                                      0.000400925   \n",
       "std_score_time                                       0.000491032   \n",
       "param_C                                                    0.001   \n",
       "param_gamma                                                0.001   \n",
       "param_kernel                                                 rbf   \n",
       "params             {'C': 0.001, 'gamma': 0.001, 'kernel': 'rbf'}   \n",
       "split0_test_score                                       0.347826   \n",
       "split1_test_score                                       0.347826   \n",
       "split2_test_score                                       0.363636   \n",
       "split3_test_score                                       0.363636   \n",
       "split4_test_score                                       0.409091   \n",
       "mean_test_score                                         0.366403   \n",
       "std_test_score                                         0.0224845   \n",
       "rank_test_score                                               27   \n",
       "\n",
       "                                                             1   \\\n",
       "mean_fit_time                                        0.00100017   \n",
       "std_fit_time                                        1.01152e-06   \n",
       "mean_score_time                                      0.00040226   \n",
       "std_score_time                                      0.000492691   \n",
       "param_C                                                   0.001   \n",
       "param_gamma                                                0.01   \n",
       "param_kernel                                                rbf   \n",
       "params             {'C': 0.001, 'gamma': 0.01, 'kernel': 'rbf'}   \n",
       "split0_test_score                                      0.347826   \n",
       "split1_test_score                                      0.347826   \n",
       "split2_test_score                                      0.363636   \n",
       "split3_test_score                                      0.363636   \n",
       "split4_test_score                                      0.409091   \n",
       "mean_test_score                                        0.366403   \n",
       "std_test_score                                        0.0224845   \n",
       "rank_test_score                                              27   \n",
       "\n",
       "                                                            2   \\\n",
       "mean_fit_time                                       0.00119972   \n",
       "std_fit_time                                       0.000400188   \n",
       "mean_score_time                                    0.000800276   \n",
       "std_score_time                                      0.00040014   \n",
       "param_C                                                  0.001   \n",
       "param_gamma                                                0.1   \n",
       "param_kernel                                               rbf   \n",
       "params             {'C': 0.001, 'gamma': 0.1, 'kernel': 'rbf'}   \n",
       "split0_test_score                                     0.347826   \n",
       "split1_test_score                                     0.347826   \n",
       "split2_test_score                                     0.363636   \n",
       "split3_test_score                                     0.363636   \n",
       "split4_test_score                                     0.409091   \n",
       "mean_test_score                                       0.366403   \n",
       "std_test_score                                       0.0224845   \n",
       "rank_test_score                                             27   \n",
       "\n",
       "                                                          3   \\\n",
       "mean_fit_time                                    0.000799417   \n",
       "std_fit_time                                      0.00039971   \n",
       "mean_score_time                                    0.0006001   \n",
       "std_score_time                                   0.000489981   \n",
       "param_C                                                0.001   \n",
       "param_gamma                                                1   \n",
       "param_kernel                                             rbf   \n",
       "params             {'C': 0.001, 'gamma': 1, 'kernel': 'rbf'}   \n",
       "split0_test_score                                   0.347826   \n",
       "split1_test_score                                   0.347826   \n",
       "split2_test_score                                   0.363636   \n",
       "split3_test_score                                   0.363636   \n",
       "split4_test_score                                   0.409091   \n",
       "mean_test_score                                     0.366403   \n",
       "std_test_score                                     0.0224845   \n",
       "rank_test_score                                           27   \n",
       "\n",
       "                                                           4   \\\n",
       "mean_fit_time                                     0.000799942   \n",
       "std_fit_time                                      0.000399971   \n",
       "mean_score_time                                    0.00019989   \n",
       "std_score_time                                     0.00039978   \n",
       "param_C                                                 0.001   \n",
       "param_gamma                                                10   \n",
       "param_kernel                                              rbf   \n",
       "params             {'C': 0.001, 'gamma': 10, 'kernel': 'rbf'}   \n",
       "split0_test_score                                    0.347826   \n",
       "split1_test_score                                    0.347826   \n",
       "split2_test_score                                    0.363636   \n",
       "split3_test_score                                    0.363636   \n",
       "split4_test_score                                    0.409091   \n",
       "mean_test_score                                      0.366403   \n",
       "std_test_score                                      0.0224845   \n",
       "rank_test_score                                            27   \n",
       "\n",
       "                                                            5   \\\n",
       "mean_fit_time                                       0.00119982   \n",
       "std_fit_time                                       0.000399304   \n",
       "mean_score_time                                    0.000600052   \n",
       "std_score_time                                     0.000489941   \n",
       "param_C                                                  0.001   \n",
       "param_gamma                                                100   \n",
       "param_kernel                                               rbf   \n",
       "params             {'C': 0.001, 'gamma': 100, 'kernel': 'rbf'}   \n",
       "split0_test_score                                     0.347826   \n",
       "split1_test_score                                     0.347826   \n",
       "split2_test_score                                     0.363636   \n",
       "split3_test_score                                     0.363636   \n",
       "split4_test_score                                     0.409091   \n",
       "mean_test_score                                       0.366403   \n",
       "std_test_score                                       0.0224845   \n",
       "rank_test_score                                             27   \n",
       "\n",
       "                                                             6   \\\n",
       "mean_fit_time                                         0.0010006   \n",
       "std_fit_time                                        1.61281e-06   \n",
       "mean_score_time                                     0.000199938   \n",
       "std_score_time                                      0.000399876   \n",
       "param_C                                                    0.01   \n",
       "param_gamma                                               0.001   \n",
       "param_kernel                                                rbf   \n",
       "params             {'C': 0.01, 'gamma': 0.001, 'kernel': 'rbf'}   \n",
       "split0_test_score                                      0.347826   \n",
       "split1_test_score                                      0.347826   \n",
       "split2_test_score                                      0.363636   \n",
       "split3_test_score                                      0.363636   \n",
       "split4_test_score                                      0.409091   \n",
       "mean_test_score                                        0.366403   \n",
       "std_test_score                                        0.0224845   \n",
       "rank_test_score                                              27   \n",
       "\n",
       "                                                            7   \\\n",
       "mean_fit_time                                      0.000800037   \n",
       "std_fit_time                                       0.000400019   \n",
       "mean_score_time                                    0.000199795   \n",
       "std_score_time                                      0.00039959   \n",
       "param_C                                                   0.01   \n",
       "param_gamma                                               0.01   \n",
       "param_kernel                                               rbf   \n",
       "params             {'C': 0.01, 'gamma': 0.01, 'kernel': 'rbf'}   \n",
       "split0_test_score                                     0.347826   \n",
       "split1_test_score                                     0.347826   \n",
       "split2_test_score                                     0.363636   \n",
       "split3_test_score                                     0.363636   \n",
       "split4_test_score                                     0.409091   \n",
       "mean_test_score                                       0.366403   \n",
       "std_test_score                                       0.0224845   \n",
       "rank_test_score                                             27   \n",
       "\n",
       "                                                           8   \\\n",
       "mean_fit_time                                       0.0006001   \n",
       "std_fit_time                                       0.00048998   \n",
       "mean_score_time                                   0.000399733   \n",
       "std_score_time                                     0.00048957   \n",
       "param_C                                                  0.01   \n",
       "param_gamma                                               0.1   \n",
       "param_kernel                                              rbf   \n",
       "params             {'C': 0.01, 'gamma': 0.1, 'kernel': 'rbf'}   \n",
       "split0_test_score                                    0.347826   \n",
       "split1_test_score                                    0.347826   \n",
       "split2_test_score                                    0.363636   \n",
       "split3_test_score                                    0.363636   \n",
       "split4_test_score                                    0.409091   \n",
       "mean_test_score                                      0.366403   \n",
       "std_test_score                                      0.0224845   \n",
       "rank_test_score                                            27   \n",
       "\n",
       "                                                         9   ...  \\\n",
       "mean_fit_time                                   0.000600195  ...   \n",
       "std_fit_time                                    0.000490057  ...   \n",
       "mean_score_time                                 0.000399828  ...   \n",
       "std_score_time                                  0.000489687  ...   \n",
       "param_C                                                0.01  ...   \n",
       "param_gamma                                               1  ...   \n",
       "param_kernel                                            rbf  ...   \n",
       "params             {'C': 0.01, 'gamma': 1, 'kernel': 'rbf'}  ...   \n",
       "split0_test_score                                  0.347826  ...   \n",
       "split1_test_score                                  0.347826  ...   \n",
       "split2_test_score                                  0.363636  ...   \n",
       "split3_test_score                                  0.363636  ...   \n",
       "split4_test_score                                  0.409091  ...   \n",
       "mean_test_score                                    0.366403  ...   \n",
       "std_test_score                                    0.0224845  ...   \n",
       "rank_test_score                                          27  ...   \n",
       "\n",
       "                                                          32  \\\n",
       "mean_fit_time                                    0.000798798   \n",
       "std_fit_time                                     0.000399402   \n",
       "mean_score_time                                  0.000200224   \n",
       "std_score_time                                   0.000400448   \n",
       "param_C                                                  100   \n",
       "param_gamma                                              0.1   \n",
       "param_kernel                                             rbf   \n",
       "params             {'C': 100, 'gamma': 0.1, 'kernel': 'rbf'}   \n",
       "split0_test_score                                          1   \n",
       "split1_test_score                                   0.956522   \n",
       "split2_test_score                                          1   \n",
       "split3_test_score                                   0.863636   \n",
       "split4_test_score                                   0.954545   \n",
       "mean_test_score                                     0.954941   \n",
       "std_test_score                                     0.0497992   \n",
       "rank_test_score                                           11   \n",
       "\n",
       "                                                        33  \\\n",
       "mean_fit_time                                  0.000789595   \n",
       "std_fit_time                                   0.000731234   \n",
       "mean_score_time                                0.000200224   \n",
       "std_score_time                                 0.000400448   \n",
       "param_C                                                100   \n",
       "param_gamma                                              1   \n",
       "param_kernel                                           rbf   \n",
       "params             {'C': 100, 'gamma': 1, 'kernel': 'rbf'}   \n",
       "split0_test_score                                 0.956522   \n",
       "split1_test_score                                 0.956522   \n",
       "split2_test_score                                        1   \n",
       "split3_test_score                                 0.863636   \n",
       "split4_test_score                                 0.954545   \n",
       "mean_test_score                                   0.946245   \n",
       "std_test_score                                   0.0447077   \n",
       "rank_test_score                                         13   \n",
       "\n",
       "                                                         34  \\\n",
       "mean_fit_time                                   0.000999355   \n",
       "std_fit_time                                    8.86968e-07   \n",
       "mean_score_time                                 0.000400305   \n",
       "std_score_time                                  0.000490273   \n",
       "param_C                                                 100   \n",
       "param_gamma                                              10   \n",
       "param_kernel                                            rbf   \n",
       "params             {'C': 100, 'gamma': 10, 'kernel': 'rbf'}   \n",
       "split0_test_score                                  0.869565   \n",
       "split1_test_score                                  0.913043   \n",
       "split2_test_score                                         1   \n",
       "split3_test_score                                  0.818182   \n",
       "split4_test_score                                  0.954545   \n",
       "mean_test_score                                    0.911067   \n",
       "std_test_score                                    0.0634877   \n",
       "rank_test_score                                          18   \n",
       "\n",
       "                                                          35  \\\n",
       "mean_fit_time                                    0.000998974   \n",
       "std_fit_time                                     2.40318e-06   \n",
       "mean_score_time                                            0   \n",
       "std_score_time                                             0   \n",
       "param_C                                                  100   \n",
       "param_gamma                                              100   \n",
       "param_kernel                                             rbf   \n",
       "params             {'C': 100, 'gamma': 100, 'kernel': 'rbf'}   \n",
       "split0_test_score                                   0.521739   \n",
       "split1_test_score                                   0.521739   \n",
       "split2_test_score                                   0.590909   \n",
       "split3_test_score                                   0.590909   \n",
       "split4_test_score                                   0.681818   \n",
       "mean_test_score                                     0.581423   \n",
       "std_test_score                                     0.0589635   \n",
       "rank_test_score                                           24   \n",
       "\n",
       "                                                 36  \\\n",
       "mean_fit_time                                0.0212   \n",
       "std_fit_time                              0.0409019   \n",
       "mean_score_time                         0.000399923   \n",
       "std_score_time                          0.000489804   \n",
       "param_C                                       0.001   \n",
       "param_gamma                                     NaN   \n",
       "param_kernel                                 linear   \n",
       "params             {'C': 0.001, 'kernel': 'linear'}   \n",
       "split0_test_score                          0.347826   \n",
       "split1_test_score                          0.347826   \n",
       "split2_test_score                          0.363636   \n",
       "split3_test_score                          0.363636   \n",
       "split4_test_score                          0.409091   \n",
       "mean_test_score                            0.366403   \n",
       "std_test_score                            0.0224845   \n",
       "rank_test_score                                  27   \n",
       "\n",
       "                                                37  \\\n",
       "mean_fit_time                                    0   \n",
       "std_fit_time                                     0   \n",
       "mean_score_time                        0.000805521   \n",
       "std_score_time                         0.000402923   \n",
       "param_C                                       0.01   \n",
       "param_gamma                                    NaN   \n",
       "param_kernel                                linear   \n",
       "params             {'C': 0.01, 'kernel': 'linear'}   \n",
       "split0_test_score                         0.869565   \n",
       "split1_test_score                         0.869565   \n",
       "split2_test_score                         0.772727   \n",
       "split3_test_score                         0.772727   \n",
       "split4_test_score                         0.909091   \n",
       "mean_test_score                           0.838735   \n",
       "std_test_score                           0.0557943   \n",
       "rank_test_score                                 21   \n",
       "\n",
       "                                               38  \\\n",
       "mean_fit_time                          0.00019083   \n",
       "std_fit_time                           0.00038166   \n",
       "mean_score_time                       0.000605631   \n",
       "std_score_time                        0.000494599   \n",
       "param_C                                       0.1   \n",
       "param_gamma                                   NaN   \n",
       "param_kernel                               linear   \n",
       "params             {'C': 0.1, 'kernel': 'linear'}   \n",
       "split0_test_score                               1   \n",
       "split1_test_score                        0.913043   \n",
       "split2_test_score                               1   \n",
       "split3_test_score                        0.909091   \n",
       "split4_test_score                        0.954545   \n",
       "mean_test_score                          0.955336   \n",
       "std_test_score                          0.0397936   \n",
       "rank_test_score                                 8   \n",
       "\n",
       "                                             39  \\\n",
       "mean_fit_time                       0.000594854   \n",
       "std_fit_time                         0.00048617   \n",
       "mean_score_time                     0.000399399   \n",
       "std_score_time                      0.000489162   \n",
       "param_C                                       1   \n",
       "param_gamma                                 NaN   \n",
       "param_kernel                             linear   \n",
       "params             {'C': 1, 'kernel': 'linear'}   \n",
       "split0_test_score                             1   \n",
       "split1_test_score                      0.956522   \n",
       "split2_test_score                             1   \n",
       "split3_test_score                      0.954545   \n",
       "split4_test_score                      0.954545   \n",
       "mean_test_score                        0.973123   \n",
       "std_test_score                        0.0219572   \n",
       "rank_test_score                               1   \n",
       "\n",
       "                                              40  \\\n",
       "mean_fit_time                                  0   \n",
       "std_fit_time                                   0   \n",
       "mean_score_time                                0   \n",
       "std_score_time                                 0   \n",
       "param_C                                       10   \n",
       "param_gamma                                  NaN   \n",
       "param_kernel                              linear   \n",
       "params             {'C': 10, 'kernel': 'linear'}   \n",
       "split0_test_score                              1   \n",
       "split1_test_score                              1   \n",
       "split2_test_score                              1   \n",
       "split3_test_score                       0.909091   \n",
       "split4_test_score                       0.954545   \n",
       "mean_test_score                         0.972727   \n",
       "std_test_score                         0.0363636   \n",
       "rank_test_score                                3   \n",
       "\n",
       "                                               41  \n",
       "mean_fit_time                         0.000207949  \n",
       "std_fit_time                          0.000415897  \n",
       "mean_score_time                       0.000190353  \n",
       "std_score_time                        0.000380707  \n",
       "param_C                                       100  \n",
       "param_gamma                                   NaN  \n",
       "param_kernel                               linear  \n",
       "params             {'C': 100, 'kernel': 'linear'}  \n",
       "split0_test_score                        0.956522  \n",
       "split1_test_score                        0.956522  \n",
       "split2_test_score                               1  \n",
       "split3_test_score                        0.909091  \n",
       "split4_test_score                        0.954545  \n",
       "mean_test_score                          0.955336  \n",
       "std_test_score                          0.0287643  \n",
       "rank_test_score                                 8  \n",
       "\n",
       "[16 rows x 42 columns]"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "results = pd.DataFrame(grid_search.cv_results_)\n",
    "# 我们给出转置后的表格\n",
    "display(results.T)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 嵌套交叉循环\n",
    "<P>嵌套交叉循环中,不是只把数据集做一次划分，而是做多次划分。这就是所谓的嵌套交叉验证。在嵌套交叉验证中,有一个外层循环，遍历将数据划分为训练集和测试集的所有划分。对于每种划分都进行一次交叉验证网格搜索。然后对于每种外层划分，利用最佳参数得到测试集分数</P>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Cross-validiation scores:[0.967 1.    0.9   0.967 1.   ]\n",
      "Mean cross-validation score:0.967\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import cross_val_score\n",
    "scores =cross_val_score(GridSearchCV(SVC(),param_grid,cv=5),iris.data,iris.target,cv=5)\n",
    "print(\"Cross-validiation scores:{}\".format(np.round(scores,3)))\n",
    "print(\"Mean cross-validation score:{:.3f}\".format(scores.mean()))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "> 注意！！嵌套交叉验证较为消耗资源，比如上述例子供构建了36.5.5=900个模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 总结\n",
    "<P>网格搜索主要用于搜索模型的最佳参数，为了使用不同的数据集测试模型，我们可以使用交叉验证网格搜索。即划分好训练集和测试集后。对训练集采取不同的参数构建模型，并以交叉验证的方式获取每个参数组合的平均值。在所有参数组合中选择平均值最大的参数组合。最后使用测试集确定精度</P>"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
